【问题标题】:Convert a list of tuples into a dictionary of lists [duplicate]将元组列表转换为列表字典[重复]
【发布时间】:2018-02-08 10:14:07
【问题描述】:

我有以下列表:

mydata =[(22, 1),
         (22, 0),
         (22, 0),
         (22, 1),
         (23, 0),
         (23, 1),
         (23, 2),
         (23, 1),
         (23, 0),
         (24, 3),
         (24, 3),
         (24, 2),
         (24, 1),
         (24, 0)]

我想根据元组中的第一项创建一个列表字典。比如:

mydict = {22: [1, 0, 0, 0], 23: [0, 1, 2, 1, 0], 24: [3, 3, 2, 1, 0]}  

【问题讨论】:

    标签: python list dictionary


    【解决方案1】:

    你可以通过以下代码做到这一点

    for i in mydata:
        if mydict.get(i[0], ''):
            mydict[i[0]] += ' ' + str(i[1])
        else:
            mydict[i[0]] = str(i[1])
    
    print(mydict)
    {'22': "1 0 0 0", '23':"0 1 2 1"}  
    

    这是如果你的字典的值 - 字符串

    【讨论】:

      【解决方案2】:

      带有itertools.groupby()功能:

      import itertools
      
      data = [(22,1), (22,0), (22,0), (22,1), (23,0), (23,1), (23,2), (23,1), (23,0), (24,3), (24,3), (24,2), (24,1), (24,0)]
      result = {k: list(i[1] for i in g) 
                   for k,g in itertools.groupby(sorted(data), key=lambda x: x[0])}
      print(result)
      

      输出:

      {24: [0, 1, 2, 3, 3], 22: [0, 0, 1, 1], 23: [0, 0, 1, 1, 2]}
      

      【讨论】:

        【解决方案3】:

        一个简单的for循环:

        mydict = {}
        
        for i in range(len(mydata)):
            mylist = mydict.get(mydata[i][0], [])
            mylist.append(mydata[i][1])
            mydict[mydata[i][0]] = mylist
        

        【讨论】:

          猜你喜欢
          • 2019-11-27
          • 2020-03-19
          • 2016-08-29
          • 2015-04-03
          • 2013-04-01
          • 1970-01-01
          • 2021-11-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多