如何用多字典对应值替换列表元素的值以计算机械功耗?
实现方法
你可以通过列表推导式快速完成替换,直接遍历list_1中的每个元素,分别从对应的字典中取出对应值即可,代码简洁高效:
核心代码
# 基于你已有的list_1和字典,生成list_2 list_2 = [[dict_a[a], dict_b[b], dict_c[c]] for a, b, c in list_1]
完整可运行示例
把这段代码和你原有的代码整合后,完整流程如下:
from itertools import product # 补充原代码缺失的导入 a = range(2,10) b = range(12) c = range(13) list_1 = [] list_1 = [list(i) for i in product(a,b,c)] list_1 = [item for item in list_1 if not (item[1] > item[0] or (item[1] and item[2] > 0) or (item[0] + item[2] > 10))] # 定义功耗字典 dict_a = {2:25, 3:30, 4:35, 5:40, 6:45, 7:50, 8:55, 9:60} dict_b = {0:15, 1:25, 2:35, 3:40, 4:45, 5:50, 6:55, 7:60, 8:75, 9:80, 10:85, 11:90} dict_c = {0:15, 1:25, 2:35, 3:40, 4:45, 5:50, 6:60, 7:70, 8:75, 9:80, 10:95, 11:100, 12:110} # 生成替换后的list_2 list_2 = [[dict_a[a_val], dict_b[b_val], dict_c[c_val]] for a_val, b_val, c_val in list_1] # 打印前5个元素验证结果 print(list_2[:5])
容错优化(可选)
如果担心list_1中出现字典未覆盖的异常值,可以用dict.get()方法避免报错,同时自定义默认值(示例中设为0,可按需调整):
list_2 = [[dict_a.get(a_val, 0), dict_b.get(b_val, 0), dict_c.get(c_val, 0)] for a_val, b_val, c_val in list_1]
内容的提问来源于stack exchange,提问作者Lewonker
相关产品推荐
相关产品推荐

