如何从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
相关产品推荐
相关产品推荐

