web-dev-qa-db-ja.com

defaultdict辞書のキーと値を反復処理する

以下は期待どおりに機能します。

d = [(1,2), (3,4)]
for k,v in d:
  print "%s - %s" % (str(k), str(v))

しかし、これは失敗します:

d = collections.defaultdict(int)
d[1] = 2
d[3] = 4
for k,v in d:
  print "%s - %s" % (str(k), str(v))

と:

Traceback (most recent call last):  
 File "<stdin>", line 1, in <module>  
TypeError: 'int' object is not iterable 

どうして?どうすれば修正できますか?

35
Georg Fritzsche

dict.iteritems()を反復処理する必要があります。

for k,v in d.iteritems():               # will become d.items() in py3k
  print "%s - %s" % (str(k), str(v))
64
SilentGhost

Python 3.6を使用している場合

from collections import defaultdict

for k, v in d.items():
    print(f'{k} - {v}')
18
Vlad Bezden

個々のコレクションの個々のアイテムを反復処理する場合:

from collections import defaultdict

for k, values in d.items():
    for value in values:
       print(f'{k} - {value}')
0
Nguai al