You need to enable JavaScript to run this app. 如何正确追加嵌套列表中的多个字典值以生成符合预期的Pandas输出
优惠活动
大模型
产品
解决方案
定价
更多

如何正确追加嵌套列表中的多个字典值以生成符合预期的Pandas输出

原代码问题定位
  • 聚合粒度错位:原代码遍历到每个内层字典就单独追加一条记录,最终会生成9行结果,和预期的「每个lst顶层子列表对应1行(共4行)」的维度要求不匹配。
  • 结果拼接格式不符:原代码用逗号直接拼接匹配值,未在逗号后加空格,和预期的"abc2, abc14"这类带空格的格式不匹配。
  • 无效字典未过滤:原代码未排除key为纯数字、带空格、空字符串的无效字典,会错误把{'4': 'abc10'}这类条目里的abc值纳入结果,和预期输出不符。
  • DataFrame列名错误:原代码设置的列名是Result,和预期的final_result列名不一致。
正确实现逻辑
  1. 以lst中的每个顶层子列表为独立处理单元,在当前单元内收集所有符合规则的值,单元处理完成后再生成一条结果存入总列表,保证结果长度和lst顶层元素数一致。
  2. 字典有效性判断规则:仅保留key为「单个大写英文字母」的字典,纯数字key、带空格的key、空key对应的字典直接跳过。
  3. 值匹配规则:对有效字典,提取对应的value,若value中包含abc字符串,则将该值加入当前单元的收集列表。
  4. 结果格式化:每个单元的收集列表用, (逗号加空格)拼接为字符串;若收集列表为空,则赋值为NA。
  5. 生成DataFrame时将列名设置为final_result。
可直接运行的修正代码
lst = [[{'A': 'abc1'}], [{'A': 'xyz'}, {'2 ': '123'}], [{'A': 'abc2'}, {'B': 'abc14'}], [{'X': 'abc3'}, {'B': 'abc4'}, {'4': 'abc10'}, {'': '123dfghfh'}]]
import pandas as pd

result = []
for wrd in lst:
    # 在当前顶层子列表范围内收集符合条件的值
    collected_vals = []
    for dct in wrd:
        # 提取字典内的键值对(所有测试字典均为单键值对结构)
        for key, val in dct.items():
            # 过滤无效字典:仅保留单个大写字母作为key的条目
            if len(key) == 1 and key.isalpha() and key.isupper():
                # 匹配值中包含abc的条目
                if 'abc' in val:
                    collected_vals.append(val)
    # 格式化当前单元的结果
    if collected_vals:
        result.append(', '.join(collected_vals))
    else:
        result.append('NA')

# 生成指定列名的DataFrame
final_result = pd.DataFrame({'final_result': result})
运行输出验证

上述代码运行后得到的输出和预期完全一致:

final_result
0 abc1
1 NA
2 abc2, abc14
3 abc3, abc4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 17:15:08