首页 > 解决方案 > 比较字典中键列表中的项目

问题描述

我有一个字典,其中每个键的值作为项目列表。我想比较字典中每个键列表中每个索引处的项目,并检查它是否相同。

dict1=OrderedDict([('A1', ['G', 'N', 'K', 'G', 'I', 'R', 'E', 'L']), 
                   ('B1', ['G', 'N', 'K', 'G', 'I', 'R', 'E', 'L']), 
                   ('C1', ['G', 'N', 'R', 'G', 'I', 'R', 'R', 'L'])])

我想检查键列表中的A1索引 0 是否与键中的索引 0B1C1. 同样,我想检查 keyA1中的每个索引,其他键列表中的相应索引是否相同。

我试过但无法比较字典中每个键的索引。

标签: pythonpython-2.7dictionary

解决方案


您可以zip将列表放在一起,然后将每个元素与每个相应的元素进行比较。

dict1=OrderedDict([('A1', ['G', 'N', 'K', 'G', 'I', 'R', 'E', 'L']), 
                   ('B1', ['G', 'N', 'K', 'G', 'I', 'R', 'E', 'L']), 
                   ('C1', ['G', 'N', 'R', 'G', 'I', 'R', 'R', 'L'])])

for i, elems in enumerate(zip(*dict1.values())):
    print "%d %s" % (i, elems)
    if any(elems[0] != check_elem for check_elem in elems[1:]):
        print "The key A1 is different at index %d" % (i)

这给出了:

0 ('G', 'G', 'G')
1 ('N', 'N', 'N')
2 ('K', 'K', 'R')
The key A1 is different at index 2
3 ('G', 'G', 'G')
4 ('I', 'I', 'I')
5 ('R', 'R', 'R')
6 ('E', 'E', 'R')
The key A1 is different at index 6
7 ('L', 'L', 'L')

推荐阅读