【问题标题】:List of key value lists to dictionary of lists [duplicate]键值列表列表到列表字典 [重复]
【发布时间】:2021-01-01 21:52:45
【问题描述】:

我已经尝试了很多次但无法找到答案! 所以请帮我找到任何逻辑来得到这个答案。

main={}
abc=[["1",("1A",'1B','1C')], ['1',('1D','1E','1F')], ['2',('2A','2B','2C')], ['2',('2D','2E','2F')], ["3",('3A','3B','3C')]]

# I WANT main DICTIONARY AS
main={'1':[("1A",'1B','1C'),('1D','1E','1F')], '2':[('2A','2B','2C'),('2D','2E','2F')], '3':[('3A','3B','3C')]}

【问题讨论】:

    标签: python list dictionary


    【解决方案1】:

    带有defaultdict 的简单循环应该可以:

    from collections import defaultdict
    
    d = defaultdict(list)
    
    for k,l in abc:
        d[k].append(l)
    
    print(d)
    defaultdict(list,
                {'1': [('1A', '1B', '1C'), ('1D', '1E', '1F')],
                 '2': [('2A', '2B', '2C'), ('2D', '2E', '2F')],
                 '3': [('3A', '3B', '3C')]})
    

    或者如果你想使用python的dict,你可以使用setdefault设置一个空列表作为默认值,如果key不存在然后append

    d = dict()
    for k,l in abc:
        d.setdefault(k, []).append(l)
    

    【讨论】:

      【解决方案2】:

      遍历循环并将键、值对添加到主字典中。

      这可能有更优雅的方式,但我认为简单的 for 循环更明确。

      abc=[["1",("1A",'1B','1C')], ['1',('1D','1E','1F')], ['2',('2A','2B','2C')], ['2',('2D','2E','2F')], ["3",('3A','3B','3C')]]
      
      main = {}
      
      for item in abc:
          if item[0] not in main:
              main[item[0]] = [item[1]]
          else:
              main[item[0]].append(item[1])
      
      

      【讨论】:

        【解决方案3】:

        试试这个:

        main = {}
        for x in abc:
            if x[0] not in main:
                main[x[0]] = []
            main[x[0]].append(x[1])
        

        【讨论】:

          【解决方案4】:

          一个班轮

          main = {x[0]: [y[1] for y in abc if y[0] == x[0]] for x in abc}
          

          【讨论】:

            猜你喜欢
            • 2019-11-13
            • 1970-01-01
            • 1970-01-01
            • 2019-09-25
            • 2013-09-21
            • 1970-01-01
            • 2013-08-29
            • 1970-01-01
            相关资源
            最近更新 更多