如何在Python字典中执行逻辑操作实现正负值替换
代码错误原因
你的原始代码存在两处核心问题:
dct.values()返回的是Python字典的值视图对象,不支持直接和数值做向量比较,无法直接传入np.where进行批量判断- 两次调用
np.where的逻辑冲突,且没有把处理后的结果关联回原字典的键,也无法完成值替换
方案1:纯Python实现(推荐中小字典场景)
不需要引入第三方依赖,用字典推导式即可快速完成转换:
dct = {'hello':1.9,'ciao':1.5,'yes':-2,'no':-3} # 生成新字典 new_dct = {k: 1 if v > 0 else -1 for k, v in dct.items()}
如果需要直接修改原字典,可以遍历键赋值:
for k in dct: dct[k] = 1 if dct[k] > 0 else -1
方案2:Numpy实现(适合大字典批量处理场景)
如果要使用Numpy实现,需要先把字典的值转为Numpy数组,处理完成后再关联回对应键:
import numpy as np dct = {'hello':1.9,'ciao':1.5,'yes':-2,'no':-3} keys = list(dct.keys()) value_arr = np.array(list(dct.values())) # 批量替换正负值 processed_arr = np.where(value_arr > 0, 1, -1) # 生成新字典 new_dct = dict(zip(keys, processed_arr))
注:如果你的字典中存在值为0的情况,可以根据实际需求调整判断分支即可。
内容的提问来源于stack exchange,提问作者Rollo99
相关产品推荐
相关产品推荐

