【问题标题】:comparing items in list of keys in dictionary比较字典中键列表中的项目
【发布时间】:2019-12-04 03:42:30
【问题描述】:

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

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 是否与键 B1C1 中的索引 0 相似。同样,我想检查键 A1 中的每个索引,其他键列表中的相应索引是否相同。

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

【问题讨论】:

  • 你期望什么输出?只是指数的数量不同?还是这些是一样的?还是不同的字母?
  • 您可以尝试将列表转换为数组,然后使用 hash() 对该数组进行哈希处理,然后检查所有键是否具有相同的哈希值。我不再使用 python 2.7,所以没有尝试自己。但如果它有效,请在此处分享代码。
  • 感谢 Trasha 的建议。
  • 谢谢曼努埃尔。我想识别相同的项目。

标签: python python-2.7 dictionary


【解决方案1】:

您可以将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')

【讨论】:

  • 感谢 Tomerikoo。我想要一个类似的输出。但字典中的键数可能因我使用的数据集而异。那么在这种情况下我可以使用 elems[1:] != elems[:-1] 吗?
  • 不,那是行不通的。我会更新我的答案。但是您是否总是想将A1 列表与所有其他列表进行比较?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
相关资源
最近更新 更多