Rumah > Soal Jawab > teks badan
Saya ingin menguji sama ada kunci wujud dalam kamus sebelum mengemas kini nilainya. Saya menulis kod berikut:
if 'key1' in dict.keys(): print "blah" else: print "boo"
Saya rasa ini bukan cara terbaik untuk menyelesaikan tugasan ini. Adakah terdapat cara yang lebih baik untuk menguji kunci dalam kamus?
P粉6748763852023-10-09 00:56:30
Guna teruskey in my_dict
而不是key in my_dict.keys()
:
if 'key1' in my_dict: print("blah") else: print("boo")
Ini akan menjadi lebih pantas kerana ia menggunakan cincang O(1) kamus, dan bukannya melakukan carian linear O(n) senarai kunci.
P粉9147310662023-10-09 00:33:49
Adakah terdapat kunci dalam
d = {"key1": 10, "key2": 23} if "key1" in d: print("this will execute") if "nonexistent key" in d: print("this will not")
Gunakan dict.get()
untuk memberikan nilai lalai apabila kunci tidak wujud:
d = {} for i in range(100): key = i % 10 d[key] = d.get(key, 0) + 1
Untuk memberikan nilai lalai bagi setiap kunci , gunakan dict.setdefault()
pada setiap kerja:
d = {} for i in range(100): d[i % 10] = d.setdefault(i % 10, 0) + 1
...atau lebih baik lagi, gunakan modul defaultdict
< /a> 来自 collections
:
from collections import defaultdict d = defaultdict(int) for i in range(100): d[i % 10] += 1