Puede que tenga un pedo cerebral aquí, pero realmente no puedo entender qué hay de malo en mi código:
for key in tmpDict:
print type(tmpDict[key])
time.sleep(1)
if(type(tmpDict[key])==list):
print 'this is never visible'
break
la salida es <type 'list'>
pero la instrucción if nunca se activa. ¿Alguien puede detectar mi error aquí?
list
como variable en alguna parte? Tenga en cuenta que si está trabajando en REPL o tal, aún puede redefinirse desde hace un tiempo.Respuestas:
Su problema es que ha redefinido
list
como una variable previamente en su código. Esto significa que cuando lo hagastype(tmpDict[key])==list
, volveráFalse
porque no son iguales.Dicho esto, en su lugar, debe usarlo
isinstance(tmpDict[key], list)
al probar el tipo de algo, esto no evitará el problema de sobrescribir,list
pero es una forma más pitónica de verificar el tipo.fuente
Deberías intentar usar
isinstance()
En tu caso
Elaborar:
EDITAR 1: La diferencia entre
isinstance()
ytype()
por qué la formaisinstance()
más preferida de verificar es queisinstance()
verifica las subclases además, mientrastype()
que no.fuente
Esto parece funcionar para mí:
fuente
Python 3.7.7
fuente
Aunque no es tan sencillo como
isinstance(x, list)
uno podría usar también:y me gusta la simple inteligencia de eso
fuente