Untuk setiap wadah python C, harapannya adalah itu
for item in C:
assert item in C
akan lulus dengan baik - tidakkah Anda akan merasa heran jika satu pengertian in
(klausa loop) memiliki makna yang sama sekali berbeda dari yang lain (pemeriksaan keberadaan)? Saya yakin akan! Secara alami berfungsi seperti itu untuk daftar, set, tuple, ...
Jadi, kapan C
kamus, jika in
menghasilkan kunci / nilai tupel dalam satu for
lingkaran, maka, dengan prinsip paling tidak heran, in
juga harus mengambil tuple seperti operan kirinya di cek kontainmen.
Seberapa bermanfaatkah itu? Cukup berguna memang, pada dasarnya membuat if (key, value) in C
sinonim untuk if C.get(key) == value
- yang merupakan cek saya percaya saya mungkin telah melakukan, atau ingin melakukan, 100 kali lebih jarang dari apa yang if k in C
sebenarnya berarti , memeriksa keberadaan kunci saja dan sepenuhnya mengabaikan nilai.
Di sisi lain, keinginan untuk mengulang hanya pada tombol cukup umum, misalnya:
for k in thedict:
thedict[k] += 1
memiliki nilai juga tidak akan membantu khususnya:
for k, v in thedict.items():
thedict[k] = v + 1
sebenarnya agak kurang jelas dan kurang ringkas. (Perhatikan bahwa items
itu adalah ejaan asli dari metode "tepat" yang digunakan untuk mendapatkan pasangan kunci / nilai: sayangnya itu kembali pada hari-hari ketika para pengakses tersebut mengembalikan seluruh daftar, sehingga untuk mendukung "hanya mengulangi" ejaan alternatif harus diperkenalkan , dan iteritems
itu - di Python 3, di mana kendala kompatibilitas ke belakang dengan versi Python sebelumnya jauh lebih lemah, itu menjadi items
lagi).
x in foo
hanya jikai
dalamfor i in foo
mengasumsikan nilaix
pada titik tertentu, saya akan mengatakan bahwa itu akan menjadi inkonsistensi yang sangat besar .