查找“词典值”中是否存在“列表”项并获取密钥

时间:2017-05-05 19:56:56

标签: python python-2.7 dictionary

我需要通过匹配列表中的项来从字典中查找包含值的键。我的方法如下......

dict1 = {'a':[1,3,4], "b": [3,4,6], 'c': [88,22,1]}
list1 = [1,3]
links = []
dict2 = {}
for key, value in dict1.iteritems():
    for link in list1:
       if link in dict1[key]:
           links.append(link)
           temp = links
           dict2[key]=temp
           links[:]=[]

print dict2

我想要的输出是

{'a': [1,3], 'c': 1, 'b': 3}

但是上面的代码我得到了......

{'a': [], 'c': [], 'b': []}

有人可以解释我哪里出错了。任何帮助都将受到高度赞赏

1 个答案:

答案 0 :(得分:2)

单行:

dict1 = {'a':[1,3,4], "b": [3,4,6], 'c': [88,22,1]}
list1 = [1,3]

res = {key : list(set(value) & set(list1)) for key, value in dict1.items()}

set1=set(list1)可以预先计算效率。