将列表与字典的每个值(是字符串列表)进行比较

时间:2019-01-14 20:00:08

标签: python dictionary

我有一个要与字典进行比较的药品清单,其中字典键是药品代码,字典值是药品清单。我只想保留字典中与毒品清单相对应的毒品。


示例列表:

l = ['sodium', 'nitrogen', 'phosphorus']

还有字典:

d = {'A02A4': ['sodium', 'nitrogen', 'carbon']}

我希望我的最终字典看起来像这样:

{'A02A4': ['nitrogen', 'sodium']}

删除列表中不存在的值,并为字典中的所有键,值对执行此操作

1 个答案:

答案 0 :(得分:2)

您可以使用字典理解和sets来仅保留与列表相交的值:

l = ['sodium', 'nitrogen', 'phosphorus']
d = {'A02A4': ['sodium', 'nitrogen', 'carbon']}

{i: list(set(v) & set(l)) for i,v in d.items()}
{'A02A4': ['nitrogen', 'sodium']}

或等效地,使用intersection

{i: list(set(v).intersection(l)) for i,v in d.items()}
{'A02A4': ['nitrogen', 'sodium']}