假设我有一个像

{
    "key_a": "value",
    "key_b": {
        "key_b_a": "value",
        "key_b_b": {
            "key_b_b_a": "value"
        }
    }
}

我想要的是创建一个方法来删除给定的键或更改其值。
def del_key(key):
    my_dict = <dictionary described above>
    keys = key.split(':')
    if len(keys) == 1:
        del my_dict[keys[0]]
    elif len(keys) == 2:
        del my_dict[keys[0]][keys[1]]
    elif len(keys) == 3:
        del my_dict[keys[0]][keys[1]][keys[2]]
    . . .

del_key('key_b:key_b_b:key_b_b_a')
del_key('key_b:key_b_b')
del_key('key_a')

我怎样才能优雅地做到这一点?

最佳答案

它假设您的输入是有效的密钥,否则您必须检查。

data = {
    "key_a": "value",
    "key_b": {
        "key_b_a": "value",
        "key_b_b": {
            "key_b_b_a": "value"
        }
    }
}

def del_key(key):
    key = key.split(':')
    temp = data
    for i in key[:-1]:
        temp = temp[i]
    del temp[key[-1]]
    return data

print del_key('key_b:key_b_b:key_b_b_a')
print del_key('key_b:key_b_b')
print del_key('key_a')

output:
{'key_a': 'value', 'key_b': {'key_b_a': 'value', 'key_b_b': {}}}
{'key_a': 'value', 'key_b': {'key_b_a': 'value'}}
{'key_b': {'key_b_a': 'value'}}

关于python - 如何优雅地潜入堆叠的字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38677125/

10-12 22:02