Pythonリストの変換を手伝ってもらえますか:
[(1, 'a'), (2, 'b'), (2, 'c'), (3, 'd'), (3, 'e')]
そのため:
(1, 'a')
はインデックス 0 です
(2, 'b'), (2, 'c')
両方ともインデックス 1 です
(3, 'd'), (3, 'e')
両方ともインデックス 2 です
簡単に言えば、要素[0]が等しいすべてのタプルは同じインデックスを持ちます。
ありがとうございました、
itertools.groupby
救助へ!:
lst = [(1, 'a'), (2, 'b'), (2, 'c'), (3, 'd'), (3, 'e')]
lst.sort(key=lambda x: x[0]) #Only necessary if your list isn't sorted already.
new_lst = [list(v) for k,v in itertools.groupby(lst,key=lambda x:x[0])]
operator.itemgetter(0)
必要に応じての代わりに使用できますlambda
...
デモ:
>>> import itertools
>>> lst = [(1, 'a'), (2, 'b'), (2, 'c'), (3, 'd'), (3, 'e')]
>>> lst.sort(key=lambda x: x[0])
>>> new_lst = [list(v) for k,v in itertools.groupby(lst,key=lambda x:x[0])]
>>> new_lst
[[(1, 'a')], [(2, 'b'), (2, 'c')], [(3, 'd'), (3, 'e')]]
何が必要かは明確ではありませんが、これにより、アイテムが最初の要素に従ってリストにグループ化されます。
groups = collections.defaultdict(list)
for x,y in items:
groups[x].append(y)