Python3.8如何基于匹配id用另一字典列表更新目标字典列表的order值
Python3 按id匹配更新字典列表字段实现方案
实现思路
- 先将y转换为id为键、order为值的映射字典,避免双层循环查询,执行效率更高
- 遍历x的每个元素,匹配到对应id时直接更新order字段即可
完整可运行代码
# 注意:原始数据需要修正2个语法问题:字典字符串键需加英文引号、字符串边界用英文引号而非中文引号 x = [{'id':3, 'name':'abc', 'order':''} , {'id':7, 'name':'cde', 'order':''}, {'id':10, 'name':'zz', 'order':''}] y = [{'id':3, 'order':4}, {'id':10, 'order':6}] # 构造id-order映射 order_map = {item['id']: item['order'] for item in y} # 遍历更新x的order字段 for item in x: item_id = item['id'] if item_id in order_map: item['order'] = order_map[item_id] # 输出验证结果 print(x)
运行输出
[{'id': 3, 'name': 'abc', 'order': 4}, {'id': 7, 'name': 'cde', 'order': ''}, {'id': 10, 'name': 'zz', 'order': 6}]
常见报错原因排查
如果之前运行报错,大概率是以下几个语法问题导致:
- 字典的
id、name等键没有加英文引号,被Python识别为未定义变量触发NameError - 字符串边界使用了中文的
’而非英文的',触发SyntaxError - 采用双层循环匹配时写错了索引或者键名,触发
KeyError或IndexError
内容的提问来源于stack exchange,提问作者jay queue
相关产品推荐
相关产品推荐

