以最快的方式比较2个字典的性能

时间:2019-01-24 10:28:38

标签: python list data-structures

我有两个包含500个字典的列表:

list_1 = [{id:'1',...}, {id:'2',...}]
list_2 = [{id:'1',...}, {id:'2',...}]
  

我需要根据ID比较两个列表。 (id相同,一个大于另一个)。

比较并返回差异的最有效方法是什么?

我们还可以对进行比较的函数使用yield来逐一返回结果吗?

1 个答案:

答案 0 :(得分:0)

>>> list_1 = [{'unique_id':'001', 'key1':'AAA', 'key2':'BBB', 'key3':'EEE'}, 
              {'unique_id':'002', 'key1':'AAA', 'key2':'CCC', 'key3':'FFF'}]
>>> list_2 = [{'unique_id':'001', 'key1':'AAA', 'key2':'DDD', 'key3':'EEE'},
              {'unique_id':'002', 'key1':'AAA', 'key2':'CCC', 'key3':'FFF'}]
>>> pairs = zip(list_1, list_2)
>>> any(x != y for x, y in pairs)
True

或者获取不同的对:

>>> [(x, y) for x, y in pairs if x != y]

您甚至可以获得每对都不匹配的密钥:

>>> [[k for k in x if x[k] != y[k]] for x, y in pairs if x != y]

可能连同相关值:

>>> [[(k, x[k], y[k]) for k in x if x[k] != y[k]] for x, y in pairs if x != y]