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

如何从Python字典列表提取值生成新列表?解决元素类型异常

解决方案

1. 转换数值类型

你的问题核心是原始字典中的值实际为字符串类型,提取后未转换导致无法进行数值运算。只需在列表推导式中将值转为整数(或浮点数)即可:

# 转为整数
a = [int(lst['a']) for lst in data]
b = [int(lst['b']) for lst in data]

# 若存在浮点数,改用float()
# a = [float(lst['a']) for lst in data]
# b = [float(lst['b']) for lst in data]

转换后即可正常执行乘法:a[0] * b[1] 会得到 1 * 4 = 4。

2. 异常处理(可选)

如果原始数据可能存在缺失键、非数字字符串等异常情况,可添加异常处理避免程序崩溃:

a = []
b = []
for item in data:
    try:
        a.append(int(item['a']))
        b.append(int(item['b']))
    except (KeyError, ValueError):
        # 可选择跳过异常项、赋值默认值或记录错误
        a.append(0)
        b.append(0)
优化建议

1. 单次遍历提取

避免两次遍历字典列表,尤其当数据量较大时,单次遍历效率更高:

a = []
b = []
for item in data:
    a.append(int(item['a']))
    b.append(int(item['b']))

2. 用zip批量转换

使用zip结合生成器表达式,一行完成提取(注意zip返回元组,需转为列表):

a, b = zip(*((int(item['a']), int(item['b'])) for item in data))
a = list(a)
b = list(b)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:16:10