我有一个要与字典进行比较的药品清单,其中字典键是药品代码,字典值是药品清单。我只想保留字典中与毒品清单相对应的毒品。
示例列表:
l = ['sodium', 'nitrogen', 'phosphorus']
还有字典:
d = {'A02A4': ['sodium', 'nitrogen', 'carbon']}
我希望我的最终字典看起来像这样:
{'A02A4': ['nitrogen', 'sodium']}
删除列表中不存在的值,并为字典中的所有键,值对执行此操作
答案 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']}