【问题标题】:List of Lists to Dictionary of Lists列表列表到列表字典
【发布时间】:2015-12-17 14:44:12
【问题描述】:

由于某些键值相同,我很难将列表列表转换为列表字典,我也遇到了 null 值的问题。我的清单是:

L = [['shark', ['one']], ['shark',['two']], ['fish', ['one']], ['fish', ['two']], ['fish',[]]]

我想要的列表字典的结构如下:

Dic = {'shark': ['one','two'], 'fish':['one', 'two', '0']} 

有什么技巧可以将相同的键值组合成这样的列表字典吗?

【问题讨论】:

  • 看看collections.defaultdict。

标签: python list dictionary


【解决方案1】:
L = [['shark', ['one']], ['shark',['two']], ['fish', ['one']], ['fish', ['two']], ['fish',[]]]

p = {}

for k, v in L:
    d = p.setdefault(k, [])
    if not v:v = ['0']
    d.extend(v)

print p

输出:

{'shark': ['one', 'two'], 'fish': ['one', 'two', '0']}

【讨论】:

    【解决方案2】:
    from collections import defaultdict 
    dct = defaultdict(list)
    l = [['shark', ['one']], ['shark',['two']], ['fish', ['one']], ['fish', ['two']], ['fish',[]]]
    for x in l:
        dct[x[0]].append(x[1])
    dct
    >>> defaultdict(list,
            {'fish': [['one'], ['two'], []], 'shark': [['one'], ['two']]})
    

    如果你需要 '0' 而不是 [] 然后在循环中添加一个 if 子句

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 2020-05-11
      相关资源
      最近更新 更多