Я хочу сравнить большой набор данных в виде 2 словарей различной длины.
(Редактирование)
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-битная версия), за исключением случаев, когда это абсолютно необходимо.
Спасибо всем.