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

如何将嵌套元组列表中的值按键拆分到对应列表?

错误原因

你写的代码存在两个核心问题:

  • 内层循环未加break语句:找到匹配的A键后没有终止遍历,同时for循环的else分支只要内层循环正常执行结束(没有被break打断)就会触发,所以哪怕找到了A的对应值,最后也会额外追加一个NaN
  • 没有做「找到值就跳过补NaN」的逻辑,导致每个子列表遍历后都会同时追加匹配到的值和多余的NaN,最终输出长度异常
修复方案

单个键提取修复版

如果只需要提取单个键(比如A)的取值列表,可以用如下代码:

a_lst = []
for tup_lst in tup_new_lst:
    # 先默认赋值为NaN
    current_val = 'NaN'
    for item in tup_lst:
        if item[0] == 'A':
            current_val = item[1]
            # 找到后直接终止内层循环,避免多余遍历
            break
    a_lst.append(current_val)
print(a_lst)

运行输出:

['10', 'NaN', '24K']

全键通用提取方案

如果需要一次性提取所有键的结果,可以用更通用的实现:

# 先获取所有唯一的键
all_keys = sorted({t[0] for sub_list in tup_new_lst for t in sub_list})
result = {}

for key in all_keys:
    key_values = []
    for sub_list in tup_new_lst:
        val = 'NaN'
        for k, v in sub_list:
            if k == key:
                val = v
                break
        key_values.append(val)
    result[key] = key_values

# 格式化输出结果
for k, v in result.items():
    print(f"{k}: {v}")

运行输出:

A: ['10', 'NaN', '24K']
B: ['28D', '49C', 'NaN']
C: ['14', 'T26', 'B28']
D: ['NaN', 'NaN', '54C']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:51:03