【问题标题】:Python Tuple of Tuple to Dict [duplicate]元组到字典的Python元组[重复]
【发布时间】:2020-04-03 01:07:52
【问题描述】:

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

 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 查询的结果; tuple 根据每个 tuple 的第一个值排序;每个元组都是一对。

我没有成功地以 Python 方式对其进行编码?有人可以帮忙吗?

【问题讨论】:

  • 一个 defaultdict(list) 听起来很适合这项工作。
  • 为此使用itertools.groupbyb = {k: [e[1] for e in g] for k, g in groupby(a, key=operator.itemgetter(0))}

标签: python loops dictionary tuples


【解决方案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) 

【讨论】:

    【解决方案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]})
    

    【讨论】:

      猜你喜欢
      • 2011-07-22
      • 2015-02-24
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 2019-03-21
      • 2017-11-05
      • 2011-09-25
      • 2018-02-23
      相关资源
      最近更新 更多