Python 将元组列表转换为列表字典

Python 将元组列表转换为列表字典,python,list,dictionary,Python,List,Dictionary,我有以下清单: 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),

我有以下清单:

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]}  

您可以通过以下代码来实现这一点

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"}  

如果使用
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]}
一个简单的for循环:

mydict = {}

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