Перебор по ключу и значению словарей defaultdict - PullRequest
32 голосов
/ 04 мая 2010

Следующее работает как положено:

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 

Почему? Как я могу это исправить?

Ответы [ 3 ]

62 голосов
/ 04 мая 2010

вам нужно перебрать dict.iteritems():

for k,v in d.iteritems():               # will become d.items() in py3k
  print "%s - %s" % (str(k), str(v))
16 голосов
/ 24 августа 2017

, если вы используете Python 3.6

from collections import defaultdict

for k, v in d.items():
    print(f'{k} - {v}')
0 голосов
/ 17 января 2019

Если вы хотите перебрать отдельные элементы в отдельной коллекции:

from collections import defaultdict

for k, values in d.items():
    for value in values:
       print(f'{k} - {value}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...