2015-05-26 2 views
-2

Похоже, что если я вынимаю печать, все работает нормально, но при попытке распечататьПочему дополнительный шрифт вызывает AttributeError в этом коде python?

len(set(row[5].values())) 

дает

AttributeError: 'int' object has no attribute 'values' 

Вот цикл

for row in my_dict[my_options].itervalues(): 
     row[3] = len(set(row[3])) 
     row[4] = len(set(row[4])) 
     row[5] = len(set(row[5].values())) # This runs 
     row[6] = len(set(row[6].values())) 

     print row[5] # returns 1 
     print len(set(row[5].values())) # This run into Attribute Error 

Печатает ли что-нибудь в спине, что может вызвать ошибку? Если

row[5] = len(set(row[5].values())) 

вызывает ошибку, он должен выводить ошибку перед линией печати, но это не так, что вызывает путаницу.

Любая помощь будет оценена по достоинству.

благодаря

+11

Потому что после присвоения 'row [5] = len (set (row [5] .values ​​()))' вы делаете в своем коде, 'row [5]' больше не dict, а целое число? –

+0

'row [5] = len (set (строка [5] .values ​​()))' приводит к тому, что строка [5] становится int, поэтому в следующей строке значения() не могут быть вызваны в строке [5] – HaseebR7

+0

. вы используете комментарии и не отвечаете? – Srgrn

ответ

1

как сказано в комментариях при использовании row[5] = len(set(row[5].values())) # This runs вы на самом деле установить значение для строки [5] , так как печать по-прежнему внутри цикла значение строки [5] будет результатом len (целое число) и int не имеет значения() function