-1

リストから「重複」タプルを削除すると同時に、それらの「値」を蓄積する方法を見つけようとしています。トリッキーな部分は、それらが必ずしも真の複製でも真の値でもないということです。最善のアプローチは何ですか?

私のリストを辞書に変換してみるほうが簡単でしょうか?

タプルの私のリスト:

lst = [('bday', 1), ('ramen', 2), ('cake', 1), ('ramen', 1), ('cake', 2), ('ramen', 1)]

期待される出力:

 ({'cake': 3, 'birthday': 1, 'ramen': 4})
4

2 に答える 2

4

defaultdictを使用できます:

from collections import defaultdict

mylist = [('birthday', 1), ('ramen', 2), ('cake', 1), ('ramen', 1), ('cake', 2), ('ramen', 1)]

d = defaultdict(int)

for k,v in mylist:
    d[k] += v        

print(d)    
# defaultdict(<type 'int'>, {'cake': 3, 'birthday': 1, 'ramen': 4})
于 2015-03-05T03:29:06.233 に答える
0

そんな時のためのアルゴリズムがあります。カウンティングソートといいます!この場合、キーがカウントしたいものであるディクショナリがあり、出現回数が値になります。

于 2015-03-05T03:37:02.640 に答える