Python 对字典的所有值应用函数
我有一本看起来像的字典Python 对字典的所有值应用函数,python,dictionary,Python,Dictionary,我有一本看起来像的字典 d= {(1, 8): 94.825000000000003, (2, 8): 4.333} 我试图应用一个函数来对所有值进行四舍五入 我不想重编字典 newD= {} for x,y in d.iteritems(): newD+= {x:round(y)} 是否有任何python方法可以对所有值应用round函数 您可以尝试以下方法: for k, v in d.iteritems(): d[k] = round(v) 它将对字典中的所有项目进行就
d= {(1, 8): 94.825000000000003, (2, 8): 4.333}
我试图应用一个函数来对所有值进行四舍五入
我不想重编字典
newD= {}
for x,y in d.iteritems():
newD+= {x:round(y)}
是否有任何python方法可以对所有值应用
round
函数 您可以尝试以下方法:
for k, v in d.iteritems():
d[k] = round(v)
它将对字典中的所有项目进行就地四舍五入。在这个特定的例子中,它将完美地工作,但是要小心-所有正常的使用注意事项都适用。这有点复杂,但您确实要求使用“pythonic方式”;) 但是,此词典理解仅适用于2.7+。如果使用较旧版本的Python,请尝试以下更复杂的方法:
newD = dict(zip(d.keys(), [round(v) for v in d.values()]))
让我把它稍微打开一点:
- 我们首先根据请求将新dictionary(
)对象重新分配回一个新dictionary(尽管您可以轻松地将其分配给相同的名称)d
- 外部
确保最终结果是一个dictionary对象dict()
返回元组列表,其中第i个元组包含每个参数序列的第i个元素zip()
- 给
的第一个参数序列是字典键(zip()
)d.keys()
- 给
的第二个参数序列是列表理解后的四舍五入值zip()
- 列表理解对字典值中的每个值进行舍入,并返回舍入值列表
newD
来重新创建字典,如果我错了,请纠正我,它不是重复的。这是不同的。你正在对字典中的一个关键元组成员进行取整,这怎么可能是答案呢?@jamylak对不起,我不明白你的问题?我迭代字典中的每个键、值对,计算一个新值并替换字典中的旧值。尝试在您的电脑中打印k,vloop@jamylak-呸!你说得对,我没有添加.iteritems()。现在编辑回复您的答案现在没有错,但我不知道这是否是OP想要的,问题很不明确,或者您可以只写d={k:round(v)代表k,v in d.items()}
,但问题明确表示“我不想重新创建字典”。@Bogdan good point,更新。谢谢优雅的解决方案@DanI很抱歉,这根本不是一个优雅的解决方案,绝对不是pythonic。但是第二个代码非常好
newD = dict(zip(d.keys(), [round(v) for v in d.values()]))