使用未定义的键将列表添加到for循环内的词典键

时间:2019-12-26 01:18:10

标签: python

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

让我们假设我有一个名为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']}

祝大家节日快乐。

2 个答案:

答案 0 :(得分:6)

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

from collections import defaultdict
dict_ = defaultdict(list)

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

答案 1 :(得分:1)

使用解压运算符(已编辑为包括梯形图),这是另一种有趣的可能性:

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