Python 2.7字典update方法返回None问题求助
为什么
update()返回None?怎么解决? 嘿,这个问题我太熟了!你踩的是Python字典update()方法的一个常见设计坑——它是原地修改原字典,不会返回更新后的字典本身,而是固定返回None。所以当你写return dis.update({"Key": ls})时,实际返回的是这个方法的返回值None,不是更新后的字典。
两种实现你需求的方法
如果你想在一行内完成更新并返回期望的字典,或者让代码正确返回结果,有两种常用思路:
方法1:先修改再返回原字典(简单直观)
先调用update()原地修改字典,再返回原字典本身,逻辑清晰易懂:
def to_json(condition=True): ls = ["abc", "xyz", "123"] dis = { "id": 123, "value": "1122" } if condition is False: return dis else: dis.update({"Key": ls}) return dis
运行print(to_json())就会输出你想要的{'id': 123, 'value': '1122', 'Key': ['abc', 'xyz', '123']}。
方法2:字典解包生成新字典(真正一行返回)
如果非要在return语句里一行完成,可以用字典解包语法生成一个全新的字典,不用修改原字典:
def to_json(condition=True): ls = ["abc", "xyz", "123"] dis = { "id": 123, "value": "1122" } return dis if not condition else {**dis, "Key": ls}
这里{**dis, "Key": ls}会把原字典dis的所有键值对展开,再加上新的键值对,直接返回合并后的新字典,完美满足你“一行内完成更新并返回”的需求。
额外小技巧(Python 3.9+适用)
如果你的Python版本是3.9及以上,还可以用更简洁的字典合并运算符|,同样返回新字典:
return dis if not condition else dis | {"Key": ls}
内容的提问来源于stack exchange,提问作者Adil Khurshid
相关产品推荐
相关产品推荐

