如何在数组匹配到指定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
相关产品推荐
相关产品推荐

