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],问题得到了解决。字典被替换为一个完整的列表,这是问题的原因