だから私は辞書を持っています
d = {'a': [4,'Adam', 2, ‘Bob’, 3], 'b': [3,'John', 4, ‘Bill’], 'c': [4,'Adam', 3, 4, ‘John’], 'd': [4,'Bill', ‘Joe’, 3], 'e': [4,'Bob', ‘Bob’, 5, 8, 10], 'f': [4, 'Joe'], 'g': [4, 'Bill', 4, ‘Joe’, 1]}
次のような名前の数を返したい
Adam: 2
Bill: 3
John: 2
Bob: 3
Joe: 3
この関数を介してコレクションカウンターを使用してみました:
x = 0
for vals in d.itervalues():
while x<len(vals):
if type(vals[x]) == str:
print Counter([vals[x]])
x = x+1
どちらが返されますか
Counter({'Adam': 1})
Counter({'Bob': 1})
Counter({'Adam': 1})
Counter({'John': 1})
Counter({'John': 1})
Counter({'Bill': 1})
Counter({'Bob': 1})
Counter({'Bob': 1})
Counter({'Bill': 1})
Counter({'Joe': 1})
Counter({'Bill': 1})
Counter({'Joe': 1})
Counter({'Joe': 1})
しかし、それは私が望む結果ではありません。カウンターを追加するだけでよいでしょうか?どうすればいいですか?カウンター クラスに加算/減算機能があることはわかっていますが、試しているメソッドが機能していません。
また、バリエーションごとに異なるカウンターを出力するために、このようなことも試しました。
'c%s'%(x)
これにより、各カウンターに c1、c2、c3 が設定され、それらを c1 + c2 + c3 で追加するだけで、必要な結果が得られます。ただし、これらの異なるカウンター リストを印刷できません。
それに伴い、一度結果を返すと必ず「Counter({ _ _})」を返します。その部分を削除したり、名前だけを印刷して数えたりするにはどうすればよいですか?
助けてくれてありがとう!