2017-09-27 6 views
-2

私は、スタックオーバーフローを回避するための提案を読み、実装しようとしました。カウンタのPythonによるタプルリストのソート

tuple_list=[(a=3,b=gt,c=434),(a=4,b=lodf,c=We),(a=3,b=gt,c=434)] 

for row in result:  
    tuple_list.append(var_tuple(row['d'], row['f'], row['q'])) 

によって作成された私は、ソートし、リスト内の重複の数をカウントしたい:

は、Python 3.6以降では、私は次のようになりますタプルのリストを持っていますそのリストは最も重複した番号が一番上にあるので、私は使用しました

tuple_counter = collections.Counter(tuple(sorted(tup)) for tup in tuple_list) 

しかしth

TypeError: unorderable types: int() < str() 

私もこれを試しましたが、最高のカウンタでソートしていないようです。

tuple_counter = collections.Counter(tuple_list) 
tuple_counter = sorted(tuple_counter, key=lambda x: x[1]) 

と同様に、この

tuple_counter = collections.Counter(tuple_list) 
tuple_counter = tuple_counter.most_common() 

これを行うには良い方法はありますか?

+4

1行目に構文エラーがありますが、私は投票しませんでしたが、有効な 'tuple_list'を表示してください。 –

+0

待ち時間、なぜtuple_counter.most_common()は動作しませんか? –

+0

@JaredGoguen 'tuple_counter'を取得する前に' sorted(tup) 'が* way *に失敗するためです。私の答えを見てください。 – HyperNeutrino

答えて

1

tupleint < strを注文することができないことを言ってこの行のエラーが異なるtype

tuple_counter = collections.Counter(tuple(sorted(tup)) for tup in tuple_list) 

が含まれています。これらのうちのどれかが評価される前に、ジェネレータの式は0でなければならず、sorted(tup)は直ちに中断します。どうして?このエラーから、tupには整数と文字列の両方が含まれていると確信しています。整数と文字列を同じリストにソートすることはできません。これは、整数と文字列を<で比較することができないためです。 intstrを比較する方法がある場合は、intstrを注文する関数でsorted(tup, key = function)を試してみてください。

あなたは出現数でカウントするので、これを試してみてください。

sorted_tuples = sorted(tuple_list, key = tuple_list.count) 

これはキーとしてtuple_listのカウンタ機能を使用してタプルをソートします。降順をソートする場合は、sorted(tuple_list, key = tuple_list.count, reversed = True)を実行します。

関連する問題