更新奇怪的字典列表中的值
Updating values in weird list of dicts
我有以下数据结构:
fields = [{'key': 'ADDRESS1', 'value': None}, {'key': 'ADDRESS2', 'value': None}]
请注意,此数据的结构不在我的控制范围内。但我必须使用它。
我将如何更新 value
"key" Object
其中 key
"key" 等于 'ADDRESS1'
,这样我在操作后会有以下内容:
N.B。更新必须更新基于 key
的值,而不是对象的索引 - 因为这是松散定义的。
fields = [{'key': 'ADDRESS1', 'value': 'Some Address Value'}, {'key': 'ADDRESS2', 'value': None}]
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}]
编辑:根据评论
中的建议删除了列表组件
如果您只打算更改一个值,Brian Joseph 的方法会很有效。但是,如果您想进行大量更改,您可能会厌倦为每个更改编写循环和条件。在这种情况下,您最好将数据结构转换为普通字典,对其进行更改,最后再转换回奇怪的字典列表。
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 的最终顺序可能会有所不同)
我有以下数据结构:
fields = [{'key': 'ADDRESS1', 'value': None}, {'key': 'ADDRESS2', 'value': None}]
请注意,此数据的结构不在我的控制范围内。但我必须使用它。
我将如何更新 value
"key" Object
其中 key
"key" 等于 'ADDRESS1'
,这样我在操作后会有以下内容:
N.B。更新必须更新基于 key
的值,而不是对象的索引 - 因为这是松散定义的。
fields = [{'key': 'ADDRESS1', 'value': 'Some Address Value'}, {'key': 'ADDRESS2', 'value': None}]
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}]
编辑:根据评论
中的建议删除了列表组件如果您只打算更改一个值,Brian Joseph 的方法会很有效。但是,如果您想进行大量更改,您可能会厌倦为每个更改编写循环和条件。在这种情况下,您最好将数据结构转换为普通字典,对其进行更改,最后再转换回奇怪的字典列表。
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 的最终顺序可能会有所不同)