Ich habe hier vielleicht einen Hirnfurz, aber ich kann wirklich nicht herausfinden, was mit meinem Code nicht stimmt:
for key in tmpDict:
print type(tmpDict[key])
time.sleep(1)
if(type(tmpDict[key])==list):
print 'this is never visible'
break
Die Ausgabe ist <type 'list'>
aber die if-Anweisung wird nie ausgelöst. Kann jemand meinen Fehler hier erkennen?
list
irgendwo als Variable verwendet? Beachten Sie, dass wenn Sie in der REPL oder einer anderen arbeiten, diese möglicherweise noch vor einiger Zeit neu definiert wurde.Antworten:
Ihr Problem ist, dass Sie
list
zuvor in Ihrem Code als Variable neu definiert haben . Dies bedeutet, dass wenn Sie dies tun,type(tmpDict[key])==list
if zurückkehrt,False
weil sie nicht gleich sind.Abgesehen davon sollten Sie stattdessen
isinstance(tmpDict[key], list)
beim Testen des Typs etwas verwenden. Dies vermeidet nicht das Problem des Überschreibens,list
sondern ist eine pythonischere Methode zum Überprüfen des Typs.quelle
Sie sollten versuchen, zu verwenden
isinstance()
In deinem Fall
Um dies zu erläutern:
quelle
Das scheint bei mir zu funktionieren:
quelle