Python 3.3。この形式のキーと値のペアを持つ辞書。
d = {'T1': ['eggs', 'bacon', 'sausage']}
値は可変長のリストであり、リスト項目を反復処理する必要があります。これは機能します:
count = 0
for l in d.values():
for i in l: count += 1
しかし、それは醜いです。もっとPython的な方法があるはずですが、私はそれを見つけることができないようです。
len(d.values())
1を生成します。これは1つのリスト(DUH)です。 here からCounterを使用して試行すると、「ハッシュできないタイプ」エラーが発生します。
sum()
と各ディクショナリ値の長さを使用します。
_count = sum(len(v) for v in d.itervalues())
_
Python 3を使用している場合は、d.values()
を使用してください。
入力サンプルと私の1つを使用したクイックデモ:
_>>> d = {'T1': ['eggs', 'bacon', 'sausage']}
>>> sum(len(v) for v in d.itervalues())
3
>>> d = {'T1': ['eggs', 'bacon', 'sausage'], 'T2': ['spam', 'ham', 'monty', 'python']}
>>> sum(len(v) for v in d.itervalues())
7
_
Counter
はここではあまり役に立ちません。エントリごとに数を作成するのではなく、すべての値の合計の長さを計算します。
>>> d = {'T1': ['eggs', 'bacon', 'sausage'], 'T2': ['spam', 'ham', 'monty', 'python']}
>>> sum(map(len, d.values()))
7
Treehouseで宿題をしているときにこれを思いついた。 (私が知っているように)少なくとも1ステップは単純にすることができますが、初心者(私のように)がこのバージョンを理解する方が簡単かもしれません。
dict = {'T1': ['eggs', 'bacon', 'sausage'], 'T2': ['bread', 'butter', 'tosti']}
total = 0
for value in dict:
value_list = dict[value]
count = len(value_list)
total += count
print(total)
私がこのトピックを見つけたとき、これを使用するコードにすでに何かがあることに気づくまで、私はこれに対する答えを探していました。これは私が思いついたものです:
count = 0
for key, values in dictionary.items():
count = len(values)
すべての辞書項目の数を保存したい場合は、新しい辞書を作成して、各キーの数を保存できます。
count = {}
for key, values in dictionary.items():
count[key] = len(values)
このメソッドが利用可能なバージョンから正確に見つけることができませんでしたが、.itemsメソッドはPython 3。