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
变量。
我有两个长度相同但键不同的字典,如下所示
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
变量。