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

如何在数组匹配到指定hostname时更新对应Id值?

解决方法:原地修改字典元素即可

嘿,这个问题其实超简单!因为在Python里,字典是可变对象——你循环时拿到的item并不是原数组中字典的副本,而是直接指向原字典的引用。所以只要在匹配到条件时直接修改item的Id值,这个改动会自动同步到原data数组里,完全不需要额外的"回写"操作~

完整可运行代码

data = [
    {"hostname": "a.example.com", "Id": "1"},
    {"hostname": "b.example.com", "Id": "2"},
    {"hostname": "c.example.com", "Id": "1"},
    {"hostname": "d.example.com", "Id": "1"}
]

for item in data:
    if item['hostname'] == 'c.example.com':
        # 直接修改Id,字符串或整数类型根据需求选择
        item['Id'] = '10'  # 或者写 10 变成整数类型

# 验证修改结果
print(data)

运行后你会看到输出里,c.example.com对应的Id已经变成10了:

[ {"hostname": "a.example.com", "Id": "1"}, {"hostname": "b.example.com", "Id": "2"}, {"hostname": "c.example.com", "Id": "10"}, {"hostname": "d.example.com", "Id": "1"} ]

补充:生成新数组的方式(可选)

如果你不想原地修改原数组,而是想生成一个新的数组,也可以用列表推导式:

data = [
    {"hostname": item["hostname"], "Id": "10"} if item["hostname"] == "c.example.com" else item
    for item in data
]

不过这种方式会创建新的字典对象(除了未匹配的项),对于简单场景来说,原地修改的方式更高效直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:17:49