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

在Python中为JSON数组的每个对象添加属性的最优方法

在Python中给JSON数组每个对象添加属性的最佳方法

嘿,这个需求其实有好几种简洁高效的实现方式,我给你整理了几个常用方案,你可以根据自己的场景来选:

1. 原地遍历修改(直接修改原列表)

如果不需要保留原始数据,这个方法最直接高效,不需要额外内存存储新列表:

original_list = [ {"A": 1, "B": "str"}, {"A": 2, "B": "str2"}, {"A": 3, "B": "str3"} ]

for item in original_list:
    item["C"] = "X"

# 输出结果就是你要的新列表
print(original_list)

原理:Python里的字典是可变对象,遍历列表时直接给每个字典添加键值对,会直接修改原列表中的元素。

2. 列表推导式生成新列表(保留原数据)

如果需要保留原始列表不被修改,用列表推导式生成全新的列表是最直观的选择(Python 3.5+支持字典解包语法):

original_list = [ {"A": 1, "B": "str"}, {"A": 2, "B": "str2"}, {"A": 3, "B": "str3"} ]

new_list = [ {**item, "C": "X"} for item in original_list ]

print(new_list)

原理:**item会把原字典的所有键值对解包出来,再加上新的"C": "X",生成一个全新的字典,原列表完全不受影响。

3. 使用map()函数(函数式风格)

如果你喜欢函数式编程的写法,map()配合lambda也能实现,效果和列表推导式类似:

original_list = [ {"A": 1, "B": "str"}, {"A": 2, "B": "str2"}, {"A": 3, "B": "str3"} ]

new_list = list(map(lambda x: {**x, "C": "X"}, original_list))

print(new_list)

原理:map()会把列表中的每个字典传入lambda函数,返回添加了新属性的新字典,最后用list()把map对象转换成列表。这个写法更简洁,但可读性比列表推导式稍弱一点。

方案总结

  • 优先选原地遍历修改:当不需要保留原数据时,简单高效,内存占用最少;
  • 优先选列表推导式:当需要保留原数据时,可读性最强,代码简洁;
  • map()写法:适合偏好函数式编程风格的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:44:20