簡體   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