Python中如何通过解构字典创建带新键的新字典?
Python 中创建含新键的新字典的惯用写法
在Python 3.5及以上版本中,你可以用字典解包语法(**)实现类似JavaScript解构的简洁写法,完全支持内联构造字典作为函数参数,无需先创建中间变量。
1. 创建新字典变量
直接合并原字典和新键值对:
obj1 = {"a": 1, "b": 2} obj2 = {**obj1, "c": 3} # obj2 结果: {"a": 1, "b": 2, "c": 3}
如果需要覆盖原字典中的已有键,只需把新键值对放在后面即可:
obj2 = {**obj1, "a": 100, "c": 3} # obj2 结果: {"a": 100, "b": 2, "c": 3}
2. 内联作为函数参数
和JavaScript的写法逻辑一致,直接在函数调用时构造新字典:
def some_function(obj): print(obj) obj1 = {"a": 1, "b": 2} # 直接内联传递合并后的字典 some_function({**obj1, "c": 3})
3. Python 3.9+ 更简洁的语法
Python 3.9及以上新增了字典合并运算符|,写法更直观:
# 创建新字典 obj2 = obj1 | {"c": 3} # 内联作为函数参数 some_function(obj1 | {"c": 3})
注意:|运算符会返回一个新字典,不会修改原字典;如果要原地修改原字典,可以用|=:
obj1 |= {"c": 3} # obj1 现在变为 {"a": 1, "b": 2, "c": 3}
你之前用copy()再加赋值的写法确实繁琐,上面这些语法完全能满足你像JavaScript/Perl那样的简洁需求。
内容的提问来源于stack exchange,提问作者Peter V. Mørch
相关产品推荐
相关产品推荐

