如何对Python字典的列表值执行指定数学运算?求助修正报错代码
问题分析
原代码执行失败的核心问题:
- 字典
a的每个值是列表类型,但你直接对整个列表v执行数学运算,math.log2无法直接作用于列表,会触发类型错误 - 未遍历列表内的单个元素,无法实现对每个值的公式转换
正确实现代码
需要针对字典中每个键对应的列表元素逐个计算:
import math a = {1: [1, 2, 5], 2: [5, 3, 1], 3: [9, 8, 7]} # 遍历每个键值对,对列表内的每个元素执行公式运算 c = { k: [x * math.log2(1/x) for x in v] for k, v in a.items() } print(c)
补充说明
- 若需要将计算结果转为整数(和你原代码的
int()逻辑一致),可修改内层推导式为int(x * math.log2(1/x)),注意当x>1时计算结果为负数,int()会向下取整 - 当
x=1时,math.log2(1/1)=0,计算结果为0,逻辑合法无需额外处理
内容的提问来源于stack exchange,提问作者Tiger
相关产品推荐
相关产品推荐

