【问题标题】:add a list to a dictionary key within a for loop with an undefined key [duplicate]在带有未定义键的for循环中将列表添加到字典键[重复]
【发布时间】:2020-04-16 09:02:39
【问题描述】:

我正在将一些数据整理到字典中,我想知道是否有更好的方法来处理字典

假设我有一本名为 dict_ 的字典,我将其初始化为这样

dict_ = {}

现在我有一个要迭代并添加到字典中的对象。

for item in iterable:
   dict_[key_a] = item.data

如果只有一个 item.data 可以添加到键中,则此方法有效,但如果我有一个数组怎么办?

我知道我能做到这一点

dict_[key_a] = []
for item in iterable:
    dict_[key_a] = [item.data]

但我想知道是否有一种方法可以让我跳过dict_[key_a] = [] 以使我的代码更简洁?

使用dict_['key_a'].append(item.data) 会导致错误,这是正确的。

我的预期输出是

print(dict_)
{'key_a' : ['foo','bar']}

祝大家节日快乐。

【问题讨论】:

标签: python


【解决方案1】:

这是一种惯用方式,使用 defaultdict 以空列表作为默认值预初始化键:

from collections import defaultdict
dict_ = defaultdict(list)

for item in iterable:
   dict_[key_a].append(item.data)

【讨论】:

    【解决方案2】:

    这是另一种有趣的可能性,使用解包运算符(经过编辑以包括开关梯):

    for item in iterable:
        if isinstance(item, str):
            dict_[key_a] = item.data
        elif isinstance(item, list):
            dict_[key_a] = [*item.data]
        ...
    

    【讨论】:

      猜你喜欢
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多