Skip to main content
 首页 » 编程设计

python 3.6 : create new dict using values from another as indices

2025年05月04日11小虾米

在 Python 3.6.3 中,我有以下字典 D1:

D1 = {0: array([1, 2, 3], dtype=int64), 1: array([0,4], dtype=int64)} 

数组中的每个值都是另一个字典 D2 的键的索引:

D2 = {'Jack': 1, 'Mike': 2, 'Tim': 3, 'Paul': 4, 'Tommy': 5} 

我正在尝试创建第三个字典,D3,具有与 D1 相同的键,作为值,D2 对应的键到 D1.values() 的索引。

我想要的结果是:

D3 = {0: ['Mike','Tim','Paul'], 1: ['Jack','Tommy']} 

我的方法是部分的,因为我很难弄清楚如何告诉 D3 从 D1 获取键和从 D2 获取值.我不太确定 和 。有什么想法吗?

D3 = {key:list(D1.values())[v] for key in D1.keys() and v in D2[v]} 

请您参考如下方法:

你可以像这样使用字典理解:

from numpy import array 
 
 
D1 = {0: array([1, 2, 3]), 1: array([0,4])} 
D2 = {'Jack': 1, 'Mike': 2, 'Tim': 3, 'Paul': 4, 'Tommy': 5} 
 
temp = dict(zip(D2.values(), D2.keys()))  # inverting key-value pairs 
 
D3 = {k: [temp.get(i+1, 'N\A') for i in v] for k, v in D1.items()} 

结果是:

{0: ['Mike', 'Tim', 'Paul'], 1: ['Jack', 'Tommy']}