Python中dict.update()返回None的原因解析
为什么使用update()合并字典会返回None?
问题出在dict.update()方法的特性上:
- Python的
update()方法是原地修改调用它的字典,会把第二个字典的键值对直接合并到第一个字典里,但这个方法本身的返回值固定为None,不会返回修改后的字典。 - 你的函数直接返回了
dict1.update(dict2)的结果,也就是None,所以打印出来就是这个值。
正确的解决方法
方法1:修改原字典后返回它
如果允许修改原字典dict1,可以先执行update(),再返回dict1:
def merge_dictionaries(dict1,dict2): dict1.update(dict2) return dict1 dict1 = {'Ten': 10, 'Twenty': 20, 'Thirty': 30} dict2 = {'Thirty': 30, 'Fourty': 40, 'Fifty': 50} print(merge_dictionaries(dict1,dict2)) # 输出: {'Ten': 10, 'Twenty': 20, 'Thirty': 30, 'Fourty': 40, 'Fifty': 50}
方法2:不修改原字典,返回新字典
如果不想改动原字典,可以先复制原字典,再合并:
def merge_dictionaries(dict1,dict2): merged_dict = dict1.copy() merged_dict.update(dict2) return merged_dict
方法3:用字典解包(Python 3.5+)
直接创建新字典,无需修改原字典:
def merge_dictionaries(dict1,dict2): return {**dict1, **dict2}
方法4:用|运算符(Python 3.9+)
Python 3.9及以上支持用|直接合并字典:
def merge_dictionaries(dict1,dict2): return dict1 | dict2
内容的提问来源于stack exchange,提问作者python_1239
相关产品推荐
相关产品推荐

