繁体   English   中英

更新奇怪的字典列表中的值

[英]Updating values in weird list of dicts

我有以下数据结构:

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

请注意,此数据的结构不在我的控制范围内。 但我必须使用它。

我将如何 go 关于更新Objectvalue “键”,其中key “键”等于'ADDRESS1' ,这样我在操作后将拥有以下内容:

注意更新必须根据key更新值,而不是 object 的索引 - 因为这是松散定义的。

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 版本时,dicts 的最终排序可能会有所不同)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM