python - 更新键而不影响嵌套字典中键的值

标签 python dictionary

我正在尝试更新 key ,同时在嵌套字典中保留其值。 虽然我找到了一种方法来做到这一点,但我必须创建新的字典才能满足它。因此,想知道是否有人可以让我更好地了解我所采取的方法?

init_dict = {
    'pageA' : {
        0 : {
            'menuA' : [
                'a01',
                'a02'
            ]
        }
    },
    'pageB' : {
        1 : {
            'menuB' : [
                'b10'
            ]
        }
    }
}

changed = {'pageB' : 0, 'pageA' : 1}

condense_dict = {}
for k, v in init_dict.items():
    for i in v.keys():
        condense_dict[k] = init_dict[k][i]


new_dict = {}
for i in condense_dict:
    new_dict[i] = {}
    new_dict[i][changed.get(i)] = condense_dict.get(i)

我的预期输出如下:

{
    'pageA' : {
        1 : {
            'menuA' : [
                'a01',
                'a02'
            ]
        }
    },
    'pageB' : {
        0 : {
            'menuB' : [
                'b10'
            ]
        }
    }
}

最佳答案

您可以从子字典中弹出可能唯一的键,并将其分配给已更改中每个条目的新键:

for k, v in changed.items():
    init_dict[k][v] = init_dict[k].pop(next(iter(init_dict[k])))

init_dict 变为:

{'pageA': {1: {'menuA': ['a01', 'a02']}}, 'pageB': {0: {'menuB': ['b10']}}}

关于python - 更新键而不影响嵌套字典中键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55011864/

相关文章:

python - 在遍历字典的同时修改字典。 Python 字典中的错误?

python - 从大 csv 创建字典列表

python - MongoDB - 在更新中使用 $in 和 $pull 只会影响单个记录,而不是 $in 中指定的所有记录

python - 为什么我得到 'None'

python 效率: counting key occurrences in dict

c - 有没有办法在C中通过超过1层的多态数据结构传递函数指针

python - 从 for 循环中捕获变量,以便稍后在 QPushButton 中使用

python - 使用原始音频数据和simpleaudio对记录的文件重新设置音调后,会产生很多噪音

python - 对不同字典中相同键的多个值求和 Python

list - 遍历 map 列表