我有两个长度相同但键不相同的字典,如下
dict1 = {"integervalue": None, "floatingValue": None, "stringValue": None}
dict2 = {"0": 10, "1": 0.1020, "2": "XXX"}
我需要将第二个字典的值更新为第一个(相同长度的字典),并使用zip来实现如下
for (k, v) in zip(dict1, dict2):
dict1[k] = dict2[v]
完成这项工作并产生如下所示的输出
dict1 = {"integervalue": 10, "floatingValue": 0, "stringValue": "XXX"}
或者有没有更好的方法来实现没有zip ?
这里有一种方法可以实现我认为你所追求的,但它没有考虑到dict2
中是否有多个int, float或str值,它修改dict1
位,并且它使用第三个字典。
dict1 = {str: 'stringValue', int: 'integerValue', float: 'floatingValue'}
dict2 = {"0": 10, "1": 0.1020, "2": "XXX"}
output = {}
for k, v in dict2.items():
output.update({
dict1.get(type(v)): v
})
输出:{'integerValue': 10, 'floatingValue': 0.102, 'stringValue': 'XXX'}
编辑也可以做for v in dict2.values()
,因为我不使用k
变量。
假设键总是具有相同的对应关系,就像您所展示的示例一样,我实际上会显式地使用它,而不是依赖于可能导致问题的插入顺序。比如:
key_translation = {
"integerValue": "0",
"floatingValue": "1",
"stringValue": "2"
}
dict1 = {"integerValue": None, "floatingValue": None, "stringValue": None}
dict2 = {"0": 10, "1": 0.1020, "2": "XXX"}
for key in dict1:
dict1[key] = dict2[key_translation[key]]
print(dict1)
# {'integerValue': 10, 'floatingValue': 0.102, 'stringValue': 'XXX'}