代码之家  ›  专栏  ›  技术社区  ›  Umar.H

使用未定义的键向for循环中的字典键添加列表

  •  4
  • Umar.H  · 技术社区  · 5 年前

    我正在把一些数据整理成词典,我想知道是否有更好的方法来处理词典

    假设我有一本字典 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 回复  |  直到 5 年前
        1
  •  6
  •   Óscar López    5 年前

    这里有一个惯用的方法,使用 defaultdict 对于使用空列表作为默认值的预初始化密钥:

    from collections import defaultdict
    dict_ = defaultdict(list)
    
    for item in iterable:
       dict_[key_a].append(item.data)
    
        2
  •  1
  •   will_f    5 年前

    下面是另一种有趣的方法,使用unpack操作符(经过编辑以包括switch ladder):

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