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í?

listcomo 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
listcomo una variable previamente en su código. Esto significa que cuando lo hagastype(tmpDict[key])==list, volveráFalseporque 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,listpero 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