根据值列表生成一个新字典



我有一个输入字典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'。有什么办法吗?

可以将简单的字典推导式与嵌套的列表推导式结合使用:

>>> {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']}

相关内容

最新更新