首页 > 解决方案 > 使用列表作为值的 Python 字典,找到具有相同值的其他键

问题描述

假设我有以下字典。

>> sample_dict = {"1": ['a','b','c'], "2": ['d','e','f'], "3": ['g','h','a']}

我想找到一种方法来查看每个键的值并返回值列表中是否有重复的变量。

例如它会输出:

>> [["1","3"] , ['a']]

我在这里查看了一些帖子,并尝试使用和/或更改它们来完成此操作,但是我发现没有一个按预期工作。如果如下所示,它们将起作用:

>> sample_dict = {"1": ['a','b','c'], "2": ['d','e','f'], "3": ['a','b','c']}

但如果列表中只有一个值相同,则不然。

标签: pythonlistdictionary

解决方案


您可以使用另一个字典将值映射到相应键的列表。然后只需选择映射到多个键的值,例如:

from collections import defaultdict

sample_dict = {'1': ['a','b','c'], '2': ['d','e','f'], '3': ['g','h','a']}    

d = defaultdict(list)  # automatically initialize every value to a list()

for k, v in sample_dict.items():
    for x in v:
        d[x].append(k)

for k, v in d.items():
    if len(v) > 1:
        print([v, k])

输出:

[['1', '3'], 'a']

推荐阅读