更改未知python结构中的变量



假设我有一个列表或字典,每个列表或字典都包含许多字典、列表、集合、字符串、浮点值等等。每次我都需要处理不同的结构,但我知道所有的字符串(其中一些在不同级别的嵌套中(都有一些额外的空间,所以我需要使用来修剪它们

if (type(variable)==str):
variable=variable.strip()

给定未知结构=[' 1',2,3,{},[[],{}],9,9]{'1:2,2:[],9:[],10:[[[]]]},我如何访问所有这些变量?在字典的情况下,键是可以的(修剪不会改变任何东西,所以我不介意这样做(,只需要改变值这个有优雅的功能吗?

递归和类型检查的结合将使您能够以预先确定的方式处理结构,而无需事先了解其确切结构。不过,您需要知道应该如何处理每个特定的容器。

variable = {'1':2,2:[],9:[],10:[[[]]]}
def custom_strip(variable):
if isinstance(variable, dict):
for k, v in variable.items():
variable[k] = custom_strip(v)
return variable
if isinstance(variable, list):
return [custom_strip(v) for v in variable]
if isinstance(variable, set):
return {custom_strip(v) for v in variable}
if isinstance(variable, float) or isinstance(variable, int):
return variable + 1
if isinstance(variable, str):
return variable.strip()
raise TypeError("Unknown type")
print(custom_strip(variable))

最新更新