Возможно, у меня тут пукнет мозг, но я действительно не могу понять, что не так с моим кодом:
for key in tmpDict:
print type(tmpDict[key])
time.sleep(1)
if(type(tmpDict[key])==list):
print 'this is never visible'
break
вывод, <type 'list'>
но оператор if никогда не срабатывает. Кто-нибудь может определить мою ошибку здесь?
list
как переменную где-нибудь? Имейте в виду, что если вы работаете в REPL или что-то в этом роде, оно может быть переопределено некоторое время назад.Ответы:
Ваша проблема заключается в том, что вы ранее переопределили
list
переменную в своем коде. Это означает, что когда вы делаетеtype(tmpDict[key])==list
, вернется,False
потому что они не равны.При этом вы должны вместо этого использовать
isinstance(tmpDict[key], list)
при тестировании типа чего-либо, это не избежит проблемы с перезаписью,list
но является более питонским способом проверки типа.источник
Вы должны попробовать использовать
isinstance()
В твоем случае
Разработать:
РЕДАКТИРОВАТЬ 1: Разница между
isinstance()
иtype()
почемуisinstance()
наиболее предпочтительный способ проверки заключается в том, чтоisinstance()
проверяет подклассы дополнительно, аtype()
не делает.источник
Кажется, это работает для меня:
источник
Python 3.7.7
источник
Хотя не так просто, как
isinstance(x, list)
можно было бы также использовать:и мне нравится простая хитрость этого
источник