Saya mungkin punya otak kentut di sini, tapi saya benar-benar tidak tahu apa yang salah dengan kode saya:
for key in tmpDict:
print type(tmpDict[key])
time.sleep(1)
if(type(tmpDict[key])==list):
print 'this is never visible'
break
output hanyalah <type 'list'>
pernyataan if jika tidak pernah terpicu. Adakah yang bisa melihat kesalahan saya di sini?
list
variabel di suatu tempat? Berhati-hatilah bahwa jika Anda bekerja di REPL atau semacamnya mungkin masih didefinisikan ulang beberapa waktu yang lalu.Jawaban:
Masalah Anda adalah bahwa Anda telah mendefinisikan
list
kembali variabel sebelumnya dalam kode Anda. Ini berarti bahwa ketika Anda melakukannya,type(tmpDict[key])==list
akan kembaliFalse
karena mereka tidak sama.Yang sedang berkata, Anda sebaiknya menggunakan
isinstance(tmpDict[key], list)
ketika menguji jenis sesuatu, ini tidak akan menghindari masalah menimpalist
tetapi merupakan cara yang lebih Pythonic untuk memeriksa jenis.sumber
Anda harus mencoba menggunakan
isinstance()
Dalam kasus Anda
Untuk menguraikan:
EDIT 1: Perbedaan antara
isinstance()
dantype()
dan mengapaisinstance()
cara yang paling disukai untuk memeriksa adalah bahwaisinstance()
memeriksa subkelas sebagai tambahan, sementaratype()
tidak.sumber
Ini sepertinya bekerja untuk saya:
sumber
Python 3.7.7
sumber
Meskipun tidak semudah yang
isinstance(x, list)
bisa digunakan juga:dan aku agak suka kepintaran sederhana itu
sumber