簡體   English   中英

根據鍵值對更新字典列表中的整個字典

[英]update an entire dictionary in a list of dictionaries based on key value pair

我有一個字典列表,我必須根據特定的鍵值對更新整個字典

values = [
            {
                "value" : "AAA",
                "rank" : 10,
                "id" : 1
            },
            {
                "value" : "BBB",
                "rank" : 50,
                "id" : 2
            }
]

我將收到一個新列表value_new = [{"value" : "CCC","rank" : 20,"id" : 1}] 這個想法是匹配 id 並更新與該 id 相關的整個字典,並根據排名對整個值列表進行排序。

我遍歷值列表並根據 id 進行匹配,當我嘗試更新它時,它替換了整個值列表

我試過這段代碼

for val in range(len(values)):
   if values[val]['id'] == value_new['id']:
     values[val] = value_new

添加后我無法對其進行排序。

我試圖用這段代碼復制你想做什么:

values = [
            {
                "value" : "AAA",
                "rank" : 10,
                "id" : 1
            },
            {
                "value" : "BBB",
                "rank" : 50,
                "id" : 2
            }
]

print(values)

value_new = [{
                "value" : "CCC",
                "rank" :20,
                "id" : 1
            }]

# code for editing here
for val in values:
    if value_new[0]['id'] == val['id']:
        for key in value_new[0]:
            val[key] = value_new[0][key]

print(values)

這如您所描述的那樣更改了字典:

前:

[{"value" : "AAA", "rank" : 10, "id" : 1}, {"value" : "BBB", "rank" : 50, "id" : 2}]

后:

[{"value" : "CCC", "rank" : 20, "id" : 1}, {"value" : "BBB", "rank" : 50, "id" : 2}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM