сравнивая два списка словарей в python - PullRequest
0 голосов
/ 03 ноября 2010

У меня есть два словаря

{key1:[list_of_objects ], {key2:[list_of_objects ]}

* 1004 например *

dict1 = {key1:['a', 'b', 'c', 'd' ], key2: ['f', 'g', 'h' ] }
dict2 = {key1:['a', 'b', 'c', 'd'],  key2: ['f', 'g', 'h', 'i' ] }

Для ключа eack в dict1 и dict2 я хочу сравнить элементы в списках.

То есть сравнивать каждое значение в dict1 [key1] с соответствующим значением в dict2 [key1] и так далее. Элементы в списках являются объектами, поэтому будет запускаться что-то вроде

if dict1[key1][0].some_function() = = dict2[key1][0].some_function()
     then condition

Какой самый быстрый способ запустить это сравнение?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2010

комплектов позволяют легко:

for key in dict1.keys():
    diff = set(dict1[key]).symmetric_difference(dict2[key])
    if diff:
        print "%s: %s" % (key, diff)  # or do whatever
0 голосов
/ 03 ноября 2010
for key in dict1.keys():
    for a,b in zip(dict1[key],dict2[key]):
        if a.some_function() == b.some_function():
           #do something

Если ваши списки очень длинные, вы можете поменять zip на izip с collections.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...