Подтвердить что ты не робот

Итерация по ключевым и значениям словарей 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 

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

4b9b3361

Ответ 1

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

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

Обновление: в py3 V3. 6+

for k,v in d.items():
  print (f"{k} - {v}")

Ответ 2

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

from collections import defaultdict

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

Ответ 3

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

from collections import defaultdict

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