Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于键值对更新字典列表中的整个字典_Python_List_Dictionary - Fatal编程技术网

Python 基于键值对更新字典列表中的整个字典

Python 基于键值对更新字典列表中的整个字典,python,list,dictionary,Python,List,Dictionary,我有一个字典列表,我必须根据特定的键值对更新整个字典 values = [ { "value" : "AAA", "rank" : 10, "id" : 1 }, { "value" : "BBB", "rank" : 50, "id"

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

values = [
            {
                "value" : "AAA",
                "rank" : 10,
                "id" : 1
            },
            {
                "value" : "BBB",
                "rank" : 50,
                "id" : 2
            }
]
我将收到一个新的列表值_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

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

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

值=[ { 价值:AAA, 排名:10, 身份证号码:1 }, { 价值:BBB, 职级:50, 身份证号码:2 } ] 打印值 值\新=[{ 价值:CCC, 职级:20, 身份证号码:1 }] 编辑代码在这里 对于值中的val: 如果值_new[0]['id']==val['id']: 对于输入值\u new[0]: val[key]=value\u新[0][key] 打印值 这更改了字典,如您所述:

之前:

[{value:AAA,秩:10,id:1},{value:BBB,秩:50,id:2}] 之后:

[{value:CCC,秩:20,id:1},{value:BBB,秩:50,id:2}]
如果代码中没有bug,那么您所做的一切都会起作用。不过,这并不高效。您可能会考虑以ID为关键字的排序DICT,按秩排序。您的意思是什么?您也可以将id用作特定词典的键。我尝试了值[val]和值[new][0],问题得到了解决。字典被替换为一个完整的列表,这是问题的原因