我试图用ages
字典的值(名称)替换d1
字典中的键(如下所示)。
我希望最后的字典看起来像:[Callum: 20, Herrara, 21 etc]
而不是只有我目前得到的最后一个值[Liz: 19]
。
这是我的代码
d1 = {
0 : "Callum",
1: "Herrera",
2: "Bob",
3: "Bill",
4: "Liz",}
ages= {
0: 20,
1: 21,
2: 40,
3: 20,
4: 19,}
for v in d1.values():
A=v
for v in ages.values():
B= v
dictionary3= {
A:B,
}
print (dictionary3)
您的尝试在每次迭代时重写数据。另外,他们只通过迭代值就失去了名称和索引之间的关系。是时候从头开始重新思考这种方法了。
我将结合使用dict数据并使用字典理解构建一个新的字典:
result = {name:ages[index] for index,name in d1.items()}
>>> result
{'Bill': 20, 'Bob': 40, 'Callum': 20, 'Herrera': 21, 'Liz': 19}
请注意,d1
就像tuples
列表一样使用。只有ages
像真正的字典一样使用。您可以插入默认年龄以避免出现如下错误:
result = {name:ages.get(index,"unknown") for index,name in d1.items()}
所以索引缺失的人得到"unknown"
年龄。
您可以简单地遍历名称并执行以下操作:
names = {
0: "Callum",
1: "Herrera",
2: "Bob",
3: "Bill",
4: "Liz"
}
ages = {
0: 20,
1: 21,
2: 40,
3: 20,
4: 19
}
name_age = {}
for key, value in names.items():
name_age[value] = ages.get(key, -1)
>>> print(name_age)
{'Callum': 20, 'Bill': 20, 'Bob': 40, 'Liz': 19, 'Herrera': 21}
虽然你使用dict
作为list
似乎很奇怪;如果你想使用list
来模仿这种行为,你可以使用enumerate()
这样做,这将相应地产生索引。
理想的情况是使用如下所示的适当数据结构;但它完全取决于您的要求。
name_age = [
{
"name": "Callum",
"age": 20
},
{
"name": "Herrera",
"age": 21
}
]