【问题标题】:Nested dictionary append element through looping嵌套字典通过循环追加元素
【发布时间】:2020-10-09 21:11:21
【问题描述】:

一般来说,我创建了一个字典,代码如下:

dict = {}
if key not in dict:
    dict[key] = [element]
else:
    dict[key].append(element)

但是如果我想对嵌套字典应用类似的方法,我该怎么办? 这是我正在考虑的事情,但当然,它没有奏效。

dict = {}
if key1, key2 not in dict:
    dict[key][key2] = [element]
else:
    dict[key][key2].append(element)

【问题讨论】:

  • 您使用的element 变量是什么?
  • @quamrana:这没什么区别。
  • @quamrana。我稍微编辑了代码。可以是任何东西
  • andif 语句中不起作用吗?
  • @leopardxpreload 然后您将不得不求助于 4 个分支,因为任何一个键都可以存在或不存在。在这里使用setdefault 是正确的方法

标签: python dictionary nested append


【解决方案1】:

使用setdefault:

d = {}
d.setdefault('a', {}).setdefault('b', []).append('element')
print(d)
# {'a': {'b': ['element']}}
d.setdefault('a', {}).setdefault('b', []).append('another_element')
# {'a': {'b': ['element', 'another_element']}}

【讨论】:

  • 如果元素有单独的列表怎么办?比如 {'a': {'b':[['element1'], ['element2']]}}
  • @DonggyunKim 然后追加一个列表....append(['another_element'])
  • @Deepsapce 不,我的意思是,每次我附加一些东西,单独的两个值将被添加到两个单独的列表中。 {'a': {'b':['element_a1, element_a2, ...], [element_b1, element_b2, ...]]}}
  • @DonggyunKim 你不能那样做。这不是一本有效的字典。
  • 嗯好的。但我只是尝试过这种方式,无论如何它似乎都有效。谢谢。 dict.setdefault(key1, {}).setdefault(key2, [[],[]])[0].append(element1) dict.setdefault(key1, {}).setdefault(key2, [[],[] ])[1].append(element2)
猜你喜欢
  • 2023-01-25
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 2022-06-15
  • 1970-01-01
相关资源
最近更新 更多