如何按百分比修改字典中的所有值?是否需遍历处理?
字典值按百分比批量修改的简便方法
当然有简便方法,不用手动逐个写赋值语句——本质上虽会遍历所有键值对,但可以用更简洁的语法实现:
方法1:字典推导式(生成新字典)
这是最常用的简洁写法,直接生成包含修改后值的新字典:
original_dict = {"a": 100, "b": 1000, "c": 50} percentage = 2 # 2% new_dict = {key: value * (1 + percentage / 100) for key, value in original_dict.items()}
执行后new_dict为{"a": 102.0, "b": 1020.0, "c": 51.0},如果需要整数结果,可添加int()转换:
new_dict = {key: int(value * (1 + percentage / 100)) for key, value in original_dict.items()}
方法2:原地修改原字典(不生成新字典)
如果不想创建新字典,直接修改原字典的话,可使用简写循环:
original_dict = {"a": 100, "b": 1000, "c": 50} percentage = 2 for key in original_dict: original_dict[key] *= (1 + percentage / 100)
也可以通过items()遍历键值对实现:
for key, value in original_dict.items(): original_dict[key] = value * (1 + percentage / 100)
补充说明
如果字典中存在非数值类型的值,可添加类型判断避免报错:
new_dict = { key: value * (1 + percentage / 100) if isinstance(value, (int, float)) else value for key, value in original_dict.items() }
内容的提问来源于stack exchange,提问作者wvzack
相关产品推荐
相关产品推荐

