You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中+=追加字典到列表仅返回键的问题排查

问题产生原因

你代码里的异常来自Python的基础语法规则:

  • 列表的+=操作等价于list.extend()方法,作用是把右侧可迭代对象的每一个拆分元素依次追加到列表末尾,而非把右侧对象作为整体追加
  • 字典属于可迭代对象,但直接对字典做迭代时,Python默认只会遍历字典的键,不会返回完整的键值对结构
    这就导致你写reported_workers += person时,实际是把每个person字典的所有字段名(也就是键)挨个拆出来塞进了列表,完全没有存入字段对应的值,最终输出就只有重复的字段名。
正确实现方案

根据你要存入列表还是字典的不同需求,对应写法如下:

1. 筛选符合条件的员工存入列表(匹配你代码中reported_workers的设计)

用list.append()方法替代+=,这个方法会把传入的员工字典作为单个完整元素追加到列表中,不会拆分字典结构:

# worker_detail:存储待匹配的员工ID集合/列表
# workers:接口返回的全量员工数据列表
reported_workers = []
for person in workers:
    if person['id'] in worker_detail:
        reported_workers.append(person)

print(reported_workers)

如果要简化代码,也可以直接用列表推导式实现相同逻辑,执行效率更高:

reported_workers = [person for person in workers if person['id'] in worker_detail]

2. 筛选符合条件的员工存入字典(匹配你代码中information字典的设计)

字典的update()方法适合批量合并键值对,存单条员工数据时直接按键赋值即可,比如以员工ID作为唯一键存储对应信息:

information = {}
for person in workers:
    if person['id'] in worker_detail:
        information[person['id']] = person

补充提示:如果你的worker_detail存的不是员工ID,而是完整的员工字典对象,需要先把里面的ID提取出来再做匹配,否则判断逻辑会失效:

# 先提取所有待匹配的员工ID
match_ids = {wd['id'] for wd in worker_detail}
reported_workers = [person for person in workers if person['id'] in match_ids]

内容的提问来源于stack exchange,提问作者ellie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:48:15