2017-07-10 8 views
2

Pythonリストリスト内のリストの数をカウントする

リストのリストがあります。 like

A = [[x,y],[a,b],[c,f],[e,f],[a,b],[x,y]] 

各リストがメインリストに何回出現したかをカウントしたいと思います。カウントを取るために - dictのサブクラス -

私の出力は、あなたがcollections.Counterを使用することができます

[x,y] = 2 
[a,b] = 2 
[c,f] = 1 
[e,f] = 1 
+3

リストをタプルに変換します。それに 'collections.Counter'を使います。 – JBernardo

+0

' x'、 'y'、' a'などに依存します。 –

答えて

2

ようにする必要があります。まず、カウントそして、辞書のキーとして(すなわちハッシュ可能)使いやすくするためのタプルにサブリストを変換します。

from collections import Counter 

count = Counter(map(tuple, A)) 
+0

ありがとうございます。出来た。 – NAGA

+0

たとえば 'x = y = a = b = c = d = e = f = []'では機能しません。 –

2

だけcollectionsからCounterを使用する:あなたの出力に応じて、

from collections import Counter 
A = [[x,y],[a,b],[c,f],[e,f],[a,b],[x,y]] 

new_A = map(tuple, A) #must convert to tuple because list is an unhaable type 

final_count = Counter(new_A) 


#final output: 

for i in set(A): 
    print i, "=", final_count(tuple(i)) 
+0

ありがとうございます。出来た。 – NAGA

0

、あなたはloopすることができますあなたのlistset通じ、元listからそのcount()で各項目を印刷:

for x in set(map(tuple, A)): 
    print '{} = {}'.format(x, A.count(list(x))) 
+0

これはリストでは機能しません(タプルの場合は、他の回答を参照してください)。 –

+0

@Błotosmętekありがとう、編集されました。 –

関連する問題