Проверка списка типов == в python
У меня может быть мозговой пердит здесь, но я действительно не могу понять, что случилось с моим кодом:
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 никогда не запускается. Может ли кто-нибудь указать мою ошибку здесь?
Ответы
Ответ 1
Ваша проблема в том, что вы переопределили list
в качестве переменной ранее в вашем коде. Это означает, что когда вы делаете type(tmpDict[key])==list
if возвращает False
потому что они не равны.
При этом вы должны вместо этого использовать isinstance(tmpDict[key], list)
при тестировании типа чего-либо, это не избавит от проблемы перезаписи list
но является более Pythonic-способом проверки типа.
Ответ 2
Вы должны попробовать использовать isinstance()
if isinstance(object, list):
## DO what you want
В твоем случае
if isinstance(tmpDict[key], list):
## DO SOMETHING
Разработать:
x = [1,2,3]
if type(x) == list():
print "This wont work"
if type(x) == list: ## one of the way to see if it list
print "this will work"
if type(x) == type(list()):
print "lets see if this works"
if isinstance(x, list): ## most preferred way to check if it list
print "This should work just fine"
Ответ 3
Кажется, это работает для меня:
>>>a = ['x', 'y', 'z']
>>>type(a)
<class 'list'>
>>>isinstance(a, list)
True