首页 > 解决方案 > 用重复键展平元组?

问题描述

我试图转

x = [((1, ‘code’, ‘XXXX’), (1, ‘ref’, ‘112B’))]

进入[(1, (‘code’, ‘XXXX’), (‘ref’, ‘112B’))]

基本上第一个数字是关键。

我尝试使用itertools.groupby函数,但结果却变得一团糟。

标签: pythontuples

解决方案


您可以先使用将列表转换为临时字典collections.defaultdict,然后再将其转换为您想要的格式。

from collections import defaultdict

x = [((1, 'code', 'XXXX'), (1, 'ref', '112B'))]
temp = defaultdict(list)

for t in x[0]:
    temp[t[0]].append(t[1:])

print(temp)
# defaultdict(<class 'list'>, {1: [('code', 'XXXX'), ('ref', '112B')]})

final = [(k, *v) for k, v in temp.items()]
print(final)
# [(1, ('code', 'XXXX'), ('ref', '112B'))]

推荐阅读