按重复元素对元组进行排序和组合

时间:2016-08-24 23:39:08

标签: python sorting combinations

我有一个类似于这个的列表:

a = [(2, 'T'), (0, 'W'), (1, 'J'), (0, 'V'), (2, 'C')]

我需要将其转换为:

b = [(0, 'W', 'V'), (1, 'J'), (2, 'T', 'C')]

这是:按每个元组中的第一个元素对其进行排序,并将所有具有重复第一个元素的元素组合成一个元组。

我可以通过对for的一些错综复杂的使用来做到这一点,但我想知道是否有更简单/更简单的方式(可能使用zip()sorted()?)

1 个答案:

答案 0 :(得分:1)

这是一个可能的解决方案:

from collections import defaultdict

a = [(2, 'T'), (0, 'W'), (1, 'J'), (0, 'V'), (2, 'C')]

b = defaultdict(list)

for v in a:
    b[v[0]].append(v[1])

b = [tuple([k] + [b[k]]) for k in sorted(b.keys())]
print b