Python Diple to Dict to Dict

时间:2019-12-09 21:49:47

标签: python loops dictionary tuples

我需要很好地更改看起来像这样的元组

 a = ((10,1),(10,2),(10,3),(20,21),(30,31),(30,32),(40,41))  

到字典

 b = {10:[1,2,3], 20:[21], 30:[31,32], 40:[41]}

源元组是SQL查询的结果;元组根据每个元组的第一值排序;每个元组都是一对。

我无法以pythonic方式编码吗?有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

您可以在此处从集合模块中使用defaultdict

from collections import defaultdict

b = defaultdict(list)

for k, v in a:
    b[k].append(v)

defaultdict(<class 'list'>, {10: [1, 2, 3], 20: [21], 30: [31, 32], 40: [41]})

答案 1 :(得分:1)

a = list(((10,1),(10,2),(10,3),(20,21),(30,31),(30,32),(40,41)) )

b = {} 
for x, y in a: 
    if x in b: 
        b[x].append(y) 
    else: 
        b[x] = [y] 

# Printing Output 
print(b)