更改未知 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))