2016-10-15 15 views
0

私はキーに関して辞書の値を数えようとしています。しかし、私は望む結果を達成できませんでした。私はそれは、リスト内のリストの最初の値だけではなく、すべてをカウントしたいPythonはリストの辞書に複数の値を数えます

Counter({'Adam': 2, 'John': 1}) 

from collections import Counter 
d = {'a': ['Adam','Adam','John'], 'b': ['John','John','Joel'], 'c': ['Adam','Adam','John} 
# create a list of only the values you want to count, 
# and pass to Counter() 
c = Counter([values[1] for values in d.itervalues()]) 
print c 

マイ出力:私は詳細を以下に紹介します。また、私の結果は鍵に関しても欲しい。私は以下の希望の出力を表示します:

{'a': [{'Adam': 1, 'John': 2}, 'b':{'John': 2, 'Joel': 1}, 'c':{'Adam': 2, 'John': 1 }]} 

この出力を得ることは可能ですか?それとも近くに何か?私はあなたが持っている提案やアイデアを歓迎したいと思います。ありがとうございました。

+0

これは何度も尋ねられています。 –

+0

こんにちはマーカス、私は何時間も解決策をオンラインで検索しようとしました。残念ながら、私はそれを見つけることができませんでした。それは私にそれにリンクを与えることができますか?ありがとうございました。 – user3271404

答えて

0

代わりに、あなたは最初に次のことforを使用して、各値を反復処理したい、あなたがvalues[1]と各リストの最初の要素を選んだdict comprehension

from collections import Counter 
d = {'a': ['Adam','Adam','John'], 'b': ['John','John','Joel'], 'c': ['Adam','Adam','John'} 
c = {i:Counter(j) for i,j in d.items()} 
print c 
+0

こんにちは、もっと詳しく説明しますか?ごめんなさい。私はまだPythonには新しいです。ありがとうございました! – user3271404

+0

あなたはあなたが望む解決策ですか? 'python dict comprehension'とhttps://docs.python.org/2/library/collections.html#collections.Counterを見てください。その単純な – itzMEonTV

+0

申し訳ありません。私はあなたから与えられたリンクに基づいて、辞書の理解に関連する情報を見つけることができました。私は間違ったリンクをくれましたか? – user3271404

1

使用して、これを試してみてください:

>>> from collections import Counter 
>>> d = {'a': ['Adam','Adam','John'], 'b': ['John','John','Joel'], 'c': ['Adam','Adam','John']} 
>>> Counter([v for values in d.itervalues() for v in values]) # iterate through each value 
Counter({'John': 4, 'Adam': 4, 'Joel': 1}) 
+0

こんにちは、あなたのソリューションは素晴らしいです。しかし、辞書にリンクされた結果を外部に出すことは可能でしょうか?例えば ​​'{'a':[{'Adam':1、 'John':2}'ありがとう! – user3271404

関連する問題