Python:如何根据字典每个键对应列表的绝对最大值生成标记字典
如何在Python中根据字典值列表的绝对最大值生成标记值?
给定如下字典:
original_dict = {(1,1,True):[-1, 0.26], (2,1,True):[0.1, 0],(1,2,True):[0.01, -1],(2,2,True):[1, -0.11]}
需要生成新字典,每个键对应的标记值规则:
- 若列表中绝对值最大的元素是第一个元素,标记为0;
- 若绝对值最大的是第二个元素,标记为1。
期望输出:
new_dict = {(1,1,True):0, (2,1,True):0,(1,2,True):1,(2,2,True):0}
解法:使用字典推导式
这是最简洁高效的方式,直接遍历原字典的键值对,按规则计算标记值:
original_dict = {(1,1,True):[-1, 0.26], (2,1,True):[0.1, 0],(1,2,True):[0.01, -1],(2,2,True):[1, -0.11]} new_dict = { key: 0 if abs(val[0]) > abs(val[1]) else 1 for key, val in original_dict.items() } print(new_dict) # 输出:{(1, 1, True): 0, (2, 1, True): 0, (1, 2, True): 1, (2, 2, True): 0}
逻辑说明
- 遍历原字典的每个
key-value对,val是对应的双元素列表; - 分别计算列表两个元素的绝对值:
abs(val[0])和abs(val[1]); - 比较两者大小:如果第一个元素的绝对值更大,返回0;否则返回1(若需要处理两者绝对值相等的情况,只需把
>改成>=,即可让相等时返回0)。
内容的提问来源于stack exchange,提问作者Ignacio Such
相关产品推荐
相关产品推荐

