我有一个类似于这个的列表:
a = [(2, 'T'), (0, 'W'), (1, 'J'), (0, 'V'), (2, 'C')]
我需要将其转换为:
b = [(0, 'W', 'V'), (1, 'J'), (2, 'T', 'C')]
这是:按每个元组中的第一个元素对其进行排序,并将所有具有重复第一个元素的元素组合成一个元组。
我可以通过对for
的一些错综复杂的使用来做到这一点,但我想知道是否有更简单/更简单的方式(可能使用zip()
和sorted()
?)
答案 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