更新dict列表中的值

2024-04-23 14:24:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据结构:

fields = [{'key': 'ADDRESS1', 'value': None}, {'key': 'ADDRESS2', 'value': None}]

请注意,此数据的结构超出我的控制范围。但我必须努力。你知道吗

我该如何更新valueObject,其中key键等于,比如说'ADDRESS1',这样我在操作后会有以下结果:

注意:更新必须更新基于key的值,而不是对象的索引,因为这是松散定义的。你知道吗

fields = [{'key': 'ADDRESS1', 'value': 'Some Address Value'}, {'key': 'ADDRESS2', 'value': None}]


Tags: 数据对象keynone数据结构fields定义object
2条回答
d_list = [{'key': 'ADDRESS1', 'value': None}, {'key': 'ADDRESS2', 'value': None}] 

for d in d_list:
    if d['key'] == 'ADDRESS1':
        d['value'] = 'Some Address Value'

>>> d_list

[{'key': 'ADDRESS1', 'value': 'Some Address Value'}, {'key': 'ADDRESS2', 'value': None}]

编辑:根据评论中的建议删除列表组件

如果您只计划更改一个值,那么brianjoseph的方法就可以很好地工作。但是如果您想做很多更改,您可能会厌倦为每个更改编写循环和条件。在这种情况下,最好将数据结构转换为普通的dict,对其进行更改,并在最后转换回一个奇怪的dict列表。你知道吗

d_list = [{'key': 'ADDRESS1', 'value': None}, {'key': 'ADDRESS2', 'value': None}]
d = {x["key"]: x["value"] for x in d_list}

d["ADDRESS1"] = 'Some Address Value'
d["new_key"] = "foo"

new_d_list = [{"key": k, "value": v} for k,v in d.items()]
print(new_d_list)

结果:

[{'key': 'ADDRESS1', 'value': 'Some Address Value'}, {'key': 'ADDRESS2', 'value': None}, {'key': 'new_key', 'value': 'foo'}]

(当使用低于3.6的Python版本时,dict的最终顺序可能会有所不同)

相关问题 更多 >