根据键值对更新字典列表中的整个字典

时间:2019-08-08 18:58:37

标签: python list dictionary

我有一个字典列表,我必须根据特定的键值对更新整个字典

import mongoose from 'mongoose';

我将收到一个新列表values = [ { "value" : "AAA", "rank" : 10, "id" : 1 }, { "value" : "BBB", "rank" : 50, "id" : 2 } ] 。想法是匹配ID,并更新与该ID相关的整个字典,并根据排名对整个值列表进行排序。

我遍历值列表并根据id进行匹配,当我尝试更新它时,替换了整个值列表

我尝试了这段代码

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

附加后我无法对其进行排序。

1 个答案:

答案 0 :(得分:1)

我试图用此代码复制您要执行的操作:

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}]