2012-04-06 9 views
-4

でタプルをマージ:は私がマージする必要があり、次のデータを持っているのpython

tuples = ('ziyao','sa'),('guilog','sa'),('yiping','pe'),('tom','pesa'),('haha','pesa'),('hehe','pesa') 

私が欲しいの出力は次のようになります。

tuples = [('ziyao','guilog','sa'),('yiping','pe'),('tom','haha','hehe','pesa')] # or 'ziyao','guilog','sa'\n'yiping','pe'\n... 
+0

あなたは完全に質問を変更しました。 – aaronasterling

+2

それはまだ意味がありません、出力グループのロジックは何ですか? – wim

+0

どのように正確にグループ化したいですか?すべてのタプルの2番目の要素に基づいていますか? – Surya

答えて

1
from collections import defaultdict 
by_second = defaultdict(list) 
for first, second in input_tuples: 
    by_second[second].append(first) 
output_tuples = [tuple(v) + (k,) for k,v in by_second.iteritems()] 
+0

申し訳ありません!これは私の質問です、ちょうど間違っている記述! – user1300949

+0

それは、ユーザーが質問 – Surya

+2

@ Suriaで説明した正確なものを解決していないOPは彼らの質問を編集しました。もともと尋ねられたことを解決しました。 – Amber

4

私は彼が何を意味するかを理解すると思います。 ..

>>> from itertools import groupby 
>>> tuples = ('ziyao','sa'),('guilog','sa'),('yiping','pe'),('tom','pesa'),('haha','pesa'),('hehe','pesa') 
>>> [list(zip(*v)[0]) + [k] for k,v in groupby(tuples,lambda x: x[1])] 
[['ziyao', 'guilog', 'sa'], ['yiping', 'pe'], ['tom', 'haha', 'hehe', 'pesa']] 
+1

はい!あなたは私を理解しています:) – user1300949

+0

ハハハ、あなたの質問は最後には良かったのですが、あなたの質問を絶えず変えないでください、あるいは多くのダウンボトムを得るでしょう;) – jamylak

+0

私は初心者でした。ありがとうございました! – user1300949

関連する問題