Быстрое сравнение данных в PythonPython

Программы на Python
Ответить
Anonymous
 Быстрое сравнение данных в Python

Сообщение Anonymous »

Я хочу сравнить большой набор данных в виде двух словарей разной длины.
(редактировать)

Код: Выделить всё

post = {0: [0.96180319786071777, 0.37529754638671875],
10: [0.20612385869026184, 0.17849941551685333],
20: [0.20612400770187378, 0.17510984838008881],...}

pre = {0: [0.96180319786071777, 0.37529754638671875],
1: [0.20612385869026184, 0.17849941551685333],
2: [0.20612400770187378, 0.17510984838008881],
5065: [0.80861318111419678, 0.76381617784500122],...}
Ответ, который нам нужно получить, — 5065: [0.80861318111419678, 0.76381617784500122]. Это основано на том факте, что мы сравниваем только значения, а не индексы вообще.

Я использую эту пару ключ-значение только для запоминания последовательности данных. При необходимости тип данных можно заменить списком/набором. Мне нужно найти пары ключ:значение (индекс и значение) элементов, которые не являются общими для словарей.

Код, который я использую, очень прост.

Код: Выделить всё

new = {}
found = []

for i in range(0, len(post)):
found= []
for j in range(0, len(pre)):
if post[i] not in pre.values():
if post[i] not in new:
new[i] = post[i]
found.append(j)
break
if found:
for f in found: pre.pop(f)
new{} содержит нужные мне элементы.
Проблема, с которой я столкнулся, заключается в том, что этот процесс слишком медленный. Иногда обработка занимает больше часа. Иногда данные могут быть намного больше. Мне нужно, чтобы это было быстрее.

Есть ли эффективный способ добиться того, чего я пытаюсь достичь? Мне бы хотелось, чтобы мы не зависели от внешних пакетов, кроме тех, которые входят в состав Python 2.5 (64 бит), кроме случаев крайней необходимости.

Спасибо всем.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»