首页 > 解决方案 > Python - 列表和字典键之间的交集

问题描述

我有这个清单:

list1 = [{'Hello'}, {'Welcome'}, {'BYE'}]

我有一本字典:

dict1 = {'Welcome': 5, 'BYE': 3, 'How are you': 3}

我希望结果是这样的:

dict2 = {'Welcome': 5, 'BYE': 3}

根据这个帖子。我试过了:

dict2 = {k: dict1[k] for k in (dict1.keys() & list1)}

但它说:

TypeError:不可散列的类型:'set'

我是否需要先制作list1,如下所示:

list1 = ['Hello', 'Welcome', 'BYE']

如果这是问题所在,那该怎么办?

标签: pythonlistdictionaryintersection

解决方案


您可以从以下值创建一组值list1

list1 = [{"Hello"}, {"Welcome"}, {"BYE"}]
dict1 = {"Welcome": 5, "BYE": 3, "How are you": 3}


dict2 = {k: dict1[k] for k in (dict1.keys() & {v for s in list1 for v in s})}
print(dict2)

印刷:

{'BYE': 3, 'Welcome': 5}

推荐阅读