Python合并长度相同但键不同的字典

2024-05-19 15:05:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两本相同长度的字典,但不同的键如下

dict1 = {"integervalue": None, "floatingValue": None, "stringValue": None}
dict2 = {"0": 10, "1": 0.1020, "2": "XXX"}

我需要将第二个dictionary的值更新为第一个(相同长度的dictionary),并使用zip实现如下所示

for (k, v) in zip(dict1, dict2):
  dict1[k] = dict2[v]

这将完成工作并产生如下输出

dict1 = {"integervalue": 10, "floatingValue": 0, "stringValue": "XXX"}

或者有没有更好的方法来实现无拉链


Tags: 方法innonefordictionary字典zipxxx
2条回答

这里有一种方法可以实现我认为您所追求的目标,但它不考虑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'}


EDIT也可以执行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'}

相关问题 更多 >