Python 将列表中的嵌套dict复制到新dict
列表中嵌套的dict如下所示:Python 将列表中的嵌套dict复制到新dict,python,Python,列表中嵌套的dict如下所示: lista = [{stuff1: {key1: value1, key2: value2}}, {stuff2: {keya: valuea, keyb: valueb}}] 我如何将元素0从该列表中复制出来,以便它自己成为一个新的dict?它是否简单到:dicta={lista[0]} 这里的背景是,我使用enumerate向用户显示stuff键,让用户选择他想要使用的键。然后,他只需输入枚举索引为给定键显示的“数字”。因为我从索引=
lista = [{stuff1: {key1: value1, key2: value2}},
{stuff2: {keya: valuea, keyb: valueb}}]
我如何将元素0从该列表中复制出来,以便它自己成为一个新的dict?它是否简单到:dicta={lista[0]}
这里的背景是,我使用enumerate向用户显示stuff键,让用户选择他想要使用的键。然后,他只需输入枚举索引为给定键显示的“数字”。因为我从索引=1开始枚举,所以我从他输入的数字中减去1,这就给出了列表中与他需要的dict相对应的元素
我的想法是,现在我知道了用户想要的dict,我可以将该特定元素从lista移到一个新的dict中,以便进行进一步的操作。也许我想得太多了,还有另一种方法可以让lista保持原样,继续做我想做的事。你可以使用
copy
dicta = list[0].copy()
演示
那么新的格言就是它自己的格言;修改它不会影响列表中的元素
如果您执行
dicta=list[0]
则dicta
的任何修改都会修改列表;[由于它是一个浅拷贝/参考拷贝
]我不太理解您的描述,但请看一下copy.deepcopy
。您的示例列表无效。否则:lista
可能应该是一个“dict”列表,所以列表中的第一个元素应该已经是dict了。@ChristianKönig我已经更新了帖子。很抱歉,这很有效!我必须更新帖子,因为我在创建OP时错误地输入了dict,但你的解决方案仍然有效!因为这些是嵌套的dict,所以使用copy.deepcopy()
>>> l
[{1: 'aaa'}, {2: 'b'}]
>>> a = l[0].copy()
>>> a[1] = 'xxx'
>>> a
{1: 'xxx'}
>>> l
[{1: 'aaa'}, {2: 'b'}]
>>>