gpt4 book ai didi

python - 圆形递归地在嵌套字典中 float

转载 作者:行者123 更新时间:2023-12-01 21:57:09 25 4
gpt4 key购买 nike

我正在尝试对嵌套字典中的浮点值进行舍入,该字典也具有其他值。我看了这个帖子 - Rounding decimals in nested data structures in Python

尝试实现这样的功能:

import collections
import numbers

def formatfloat(x):
return "%.3g" % float(x)

def pformat(dictionary, function):
if isinstance(dictionary, dict):
return type(dictionary)((key, pformat(value)) for key, value in dictionary.items())
if isinstance(dictionary, collections.Container):
return type(dictionary)(pformat(value) for value in dictionary)
if isinstance(dictionary, numbers.Number):
return formatfunc(dictionary)
return dictionary

x={'a':[1.05600000001,2.34581736481,[8.1111111112,9.999990111111]],
'b':[3.05600000001,4.34581736481,[5.1111111112,6.999990111111]]}

pformat(x, formatfloat)

我收到这个错误:

TypeError: pformat() missing 1 required positional argument: 'function'

答案被标记为正确,所以我想知道是否需要更改任何内容。这正是我要为我的字典实现的。感谢您的帮助!

最佳答案

需要在pformat后面加一个参数:

之前

pformat(value))

之后:

pformat(value, function))

然后把打字错误:formatfunc改成function

这是工作代码:

import collections
import numbers

def formatfloat(x):
return "%.3g" % float(x)

def pformat(dictionary, function):
if isinstance(dictionary, dict):
return type(dictionary)((key, pformat(value, function)) for key, value in dictionary.items())
if isinstance(dictionary, collections.Container):
return type(dictionary)(pformat(value, function) for value in dictionary)
if isinstance(dictionary, numbers.Number):
return function(dictionary)
return dictionary

x={'a':[1.05600000001,2.34581736481,[8.1111111112,9.999990111111]],
'b':[3.05600000001,4.34581736481,[5.1111111112,6.999990111111]]}

pformat(x, formatfloat)

结果:

{'a': ['1.06', '2.35', ['8.11', '10']], 'b': ['3.06', '4.35', ['5.11', '7']]}

关于python - 圆形递归地在嵌套字典中 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56048627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com