You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确向Python字典中的列表添加元素?(解决append赋值后值为None的问题)

问题:字典中的列表append后变成了None,如何正确添加元素?

你遇到的问题其实是Python列表append()方法的特性导致的——append()是原地修改列表,它的返回值是None。

看你的代码:

dic["t"] = dic["t"].append({"x": 3})

这里你把append()的返回值(也就是None)重新赋值给了dic["t"],自然就覆盖了原来的列表,最后得到{'t': None}。

正确的实现方法有两种:

  1. 直接调用append,不赋值(推荐,原地修改更高效):
dic = {"t": [{"x": 0}, {"x": 1}, {"x": 2}]}
print(dic)
dic["t"].append({"x": 3})  # 直接修改原列表,不需要赋值
print(dic)

运行后就能得到你期望的结果:{'t': [{'x': 0}, {'x': 1}, {'x': 2}, {'x': 3}]}

  1. 用+运算符创建新列表再赋值(适合需要保留原列表的场景):
    如果不想修改原列表,而是生成新列表再赋值,可以这样写:
dic = {"t": [{"x": 0}, {"x": 1}, {"x": 2}]}
print(dic)
dic["t"] = dic["t"] + [{"x": 3}]  # 生成新列表并赋值
print(dic)

这种方式会创建新列表,原列表不会被修改,但效率比append()低,因为要复制整个列表。

补充说明:

Python中很多可变对象的方法都是原地修改并返回None,比如列表的sort()、extend(),字典的update()等,目的是提醒你它们直接修改原对象,而非返回新对象。以后遇到类似"变成None"的问题,可以先检查是不是把这类方法的返回值赋值给了变量~

内容的提问来源于stack exchange,提问作者william waterhouse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 16:42:28