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

Python Merge dictionaries of same length but different keys

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

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 来实现?

假设键始终具有与您展示的示例中相同的对应关系,我实际上会明确说明而不是依赖插入顺序,这可能会导致问题。类似于:

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

这是实现我认为您所追求的目标的一种方法,但它不考虑 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 变量。