python-3.x 基于值列表生成新字典[重复]

3okqufwl  于 2023-04-08  发布在  Python
关注(0)|答案(1)|浏览(157)

此问题已在此处有答案

How to create a dictionary to reverse lookup list items that each have sets?(4个答案)
2天前关闭。
我有一个输入字典d1和列表l1,并希望生成输出字典d2。

d1 = {'A1':['b1','b2','b3'], 'A2':['b2', 'b3'], 'A3':['b1', 'b5']}
l1 = ['b2', 'b5', 'b1', 'b3']

输出字典

d2 = {'b2':['A1','A2'], 'b5':['A3'], 'b1':['A1','A3'], 'b3':['A1','A2']}

在输出字典中,列表l1的所有值都充当键,对于字典d2的值,我们在d1字典值中搜索特定键,如果该键存在于字典值中,我们将从字典d1中选择相应的键。例如,对于键b2,我们在字典值中搜索它,因为它存在于'A1'键和'A2'键的值中,所以我们从d1中选择'A1'和'A2'。有什么方法可以做到吗?

z9smfwbn

z9smfwbn1#

你可以使用一个简单的字典解析和一个嵌套的列表解析:

>>> {value: [key for key in d1 if value in d1[key]] for value in l1}
{'b2': ['A1', 'A2'], 'b5': ['A3'], 'b1': ['A1', 'A3'], 'b3': ['A1', 'A2']}

相关问题