Ответ 1
Попробуйте это
for k in countList:
v= countList[k]
Или это
for k, v in countList.items():
Прочтите это, пожалуйста: http://docs.python.org/library/stdtypes.html#mapping-types-dict
Здесь моя функция:
def printSubnetCountList(countList):
print type(countList)
for k, v in countList:
if value:
print "Subnet %d: %d" % key, value
Здесь вывод, когда функция вызывается со словарем, переданным ему:
<type 'dict'>
Traceback (most recent call last):
File "compareScans.py", line 81, in <module>
printSubnetCountList(subnetCountOld)
File "compareScans.py", line 70, in printSubnetCountList
for k, v in countList:
TypeError: 'int' object is not iterable
Любые идеи?
Попробуйте это
for k in countList:
v= countList[k]
Или это
for k, v in countList.items():
Прочтите это, пожалуйста: http://docs.python.org/library/stdtypes.html#mapping-types-dict
Синтаксис for k, v
- это краткая форма нотации для распаковки кортежей и может быть записана как for (k, v)
. Это означает, что каждый элемент итерированной коллекции должен быть последовательностью, состоящей из ровно двух элементов. Но итерация в словарях дает только ключи, а не значения.
В решении используется либо dict.items()
, либо dict.iteritems()
(ленивый вариант), которые возвращают последовательность кортежей с ключом.
Вы не можете повторять такой дикт. Пример:
def printSubnetCountList(countList):
print type(countList)
for k in countList:
if countList[k]:
print "Subnet %d: %d" % k, countList[k]