一行代码条件替换字典值

0 投票
1 回答
2926 浏览
提问于 2025-04-15 13:08

有没有更好的方法来用列表推导式来表达这个?或者有没有其他方法可以用一行代码来实现?

我想把原字典中的每个值替换成col字典中对应的值,如果在col字典中找不到,就保持原来的值不变。

col = {'1':3.5, '6':4.7}
original = {'1':3, '2':1, '3':5, '4':2, '5':3, '6':4}
for entry in col.iteritems():
    original[entry[0]] = entry[1]

1 个回答

2

我觉得你想要的是update这个方法。

update([other])

这个方法会用另一个字典里的键值对来更新当前的字典,如果有相同的键,会覆盖掉原来的值。返回值是None,也就是说它不会返回任何东西。

代码:

original.update(col[user])

一个简单的测试:

user = "user"

matrix = {
    "user" : {
        "a" : "b",
        "c" : "d",
        "e" : "f",
    },
}

col = {
    "user" : {
        "a" : "b_2",
        "c" : "d_2",
    },
}

original.update(col[user])

print(original)

输出:

{'a': 'b_2', 'c': 'd_2', 'e': 'f'}

撰写回答