更改未知 python 结构中的变量
change variables in an unknown python structure
假设我有一个列表或字典,每个列表或字典都包含许多字典、列表、集合、字符串、浮点数等。
每次我需要处理不同的结构时,但我所知道的是所有字符串(其中一些在不同的嵌套级别)中都有一些额外的空间,所以我需要 trim 他们使用 :
if (type(variable)==str):
variable=variable.strip()
在未知结构为 = [' 1',2,3,{},[[],{}],9,9]
或 {'1:2,2:[],9:[],10:[[[]]]}
的情况下,我如何访问所有这些变量?
在字典的情况下,键没问题(trimming 不会改变任何东西,所以我不介意这样做),只需要改变值
有没有优雅的功能?
递归和类型检查的结合将使您能够以预先确定的方式处理结构,而无需事先知道其确切的结构。不过,您需要知道应如何处理每个特定容器。
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))
假设我有一个列表或字典,每个列表或字典都包含许多字典、列表、集合、字符串、浮点数等。 每次我需要处理不同的结构时,但我所知道的是所有字符串(其中一些在不同的嵌套级别)中都有一些额外的空间,所以我需要 trim 他们使用 :
if (type(variable)==str):
variable=variable.strip()
在未知结构为 = [' 1',2,3,{},[[],{}],9,9]
或 {'1:2,2:[],9:[],10:[[[]]]}
的情况下,我如何访问所有这些变量?
在字典的情况下,键没问题(trimming 不会改变任何东西,所以我不介意这样做),只需要改变值
有没有优雅的功能?
递归和类型检查的结合将使您能够以预先确定的方式处理结构,而无需事先知道其确切的结构。不过,您需要知道应如何处理每个特定容器。
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))