Dalam tutorial ini, anda akan mempelajari semua perkara mengenai kamus Python; bagaimana mereka dibuat, mengakses, menambah, membuang unsur daripadanya dan pelbagai kaedah terbina dalam.
Video: Kamus Python untuk Menyimpan Pasangan kunci / nilai
Kamus Python adalah koleksi item yang tidak tersusun. Setiap item kamus mempunyai key/value
pasangan.
Kamus dioptimumkan untuk mendapatkan nilai apabila kunci diketahui.
Membuat Kamus Python
Membuat kamus semudah meletakkan item di dalam pendakap kerinting yang ()
dipisahkan dengan koma.
Item mempunyai key
dan sepadan value
yang dinyatakan sebagai pasangan ( kunci: nilai ).
Walaupun nilainya boleh berupa jenis data apa pun dan dapat diulang, kunci mestilah jenis tidak berubah (rentetan, nombor atau tupel dengan elemen tidak berubah) dan mesti unik.
# empty dictionary my_dict = () # dictionary with integer keys my_dict = (1: 'apple', 2: 'ball') # dictionary with mixed keys my_dict = ('name': 'John', 1: (2, 4, 3)) # using dict() my_dict = dict((1:'apple', 2:'ball')) # from sequence having each item as a pair my_dict = dict(((1,'apple'), (2,'ball')))
Seperti yang anda lihat dari atas, kita juga dapat membuat kamus menggunakan fungsi terbina dalam dict()
.
Mengakses Elemen dari Kamus
Walaupun pengindeksan digunakan dengan jenis data lain untuk mengakses nilai, kamus menggunakan keys
. Kunci boleh digunakan sama ada di dalam kurungan persegi ()
atau dengan get()
kaedahnya.
Sekiranya kita menggunakan tanda kurung persegi ()
, KeyError
dinaikkan sekiranya kunci tidak dijumpai di kamus. Sebaliknya, get()
kaedah itu kembali None
jika kunci tidak dijumpai.
# get vs () for retrieving elements my_dict = ('name': 'Jack', 'age': 26) # Output: Jack print(my_dict('name')) # Output: 26 print(my_dict.get('age')) # Trying to access keys which doesn't exist throws error # Output None print(my_dict.get('address')) # KeyError print(my_dict('address'))
Pengeluaran
Jack 26 None Traceback (panggilan terakhir terakhir): Fail "", baris 15, dalam cetakan (my_dict ('address')) KeyError: 'address'
Menukar dan Menambah elemen Kamus
Kamus boleh berubah. Kita boleh menambah item baru atau mengubah nilai item yang ada menggunakan operator penugasan.
Sekiranya kuncinya sudah ada, maka nilai yang ada akan dikemas kini. Sekiranya kunci tidak ada, pasangan ( kunci: nilai ) baru akan ditambahkan ke kamus.
# Changing and adding Dictionary Elements my_dict = ('name': 'Jack', 'age': 26) # update value my_dict('age') = 27 #Output: ('age': 27, 'name': 'Jack') print(my_dict) # add item my_dict('address') = 'Downtown' # Output: ('address': 'Downtown', 'age': 27, 'name': 'Jack') print(my_dict)
Pengeluaran
('name': 'Jack', 'age': 27) ('name': 'Jack', 'age': 27, 'address': 'Downtown')
Mengeluarkan unsur dari Kamus
Kita boleh membuang item tertentu dalam kamus dengan menggunakan pop()
kaedah. Kaedah ini membuang item dengan yang disediakan key
dan mengembalikan value
.
The popitem()
kaedah boleh digunakan untuk mengeluarkan dan kembali sembarangan (key, value)
pasangan item daripada kamus. Semua barang boleh dikeluarkan sekaligus, menggunakan clear()
kaedah.
Kita juga boleh menggunakan del
kata kunci untuk membuang item individu atau keseluruhan kamus itu sendiri.
# Removing elements from a dictionary # create a dictionary squares = (1: 1, 2: 4, 3: 9, 4: 16, 5: 25) # remove a particular item, returns its value # Output: 16 print(squares.pop(4)) # Output: (1: 1, 2: 4, 3: 9, 5: 25) print(squares) # remove an arbitrary item, return (key,value) # Output: (5, 25) print(squares.popitem()) # Output: (1: 1, 2: 4, 3: 9) print(squares) # remove all items squares.clear() # Output: () print(squares) # delete the dictionary itself del squares # Throws Error print(squares)
Pengeluaran
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Jejak balik (panggilan terakhir terakhir): Fail "", baris 30, dalam bentuk cetak (kotak) NameError: nama 'kotak' tidak ditentukan
Kaedah Kamus Python
Kaedah yang tersedia dengan kamus dibentangkan di bawah. Sebilangan daripadanya telah digunakan dalam contoh di atas.
Kaedah | Penerangan |
---|---|
jelas () | Membuang semua item dari kamus. |
salinan() | Mengembalikan salinan kamus yang cetek. |
dari kunci (seq (, v)) | Mengembalikan kamus baru dengan kunci dari seq dan nilai sama dengan v (lalai ke None ). |
dapatkan (kunci (, d)) | Mengembalikan nilai kunci. Sekiranya kunci tidak ada, kembalikan d (lalai ke None ). |
barang () | Kembalikan objek baru item kamus dalam (kunci, nilai) format. |
kunci () | Mengembalikan objek baru kunci kamus. |
pop (kunci (, d)) | Mengeluarkan item dengan kunci dan mengembalikan nilainya atau d jika kunci tidak dijumpai. Sekiranya d tidak disediakan dan kuncinya tidak dijumpai, ia akan dinaikkan KeyError . |
popitem () | Membuang dan mengembalikan item sewenang-wenangnya ( kunci, nilai ). Menaikkan KeyError sekiranya kamus kosong. |
setdefault (kunci (, d)) | Mengembalikan nilai yang sepadan jika kunci ada di kamus Sekiranya tidak, masukkan kekunci dengan nilai d dan kembalikan d (lalai ke None ). |
kemas kini ((lain-lain)) | Updates the dictionary with the key/value pairs from other, overwriting existing keys. |
values() | Returns a new object of the dictionary's values |
Here are a few example use cases of these methods.
# Dictionary Methods marks = ().fromkeys(('Math', 'English', 'Science'), 0) # Output: ('English': 0, 'Math': 0, 'Science': 0) print(marks) for item in marks.items(): print(item) # Output: ('English', 'Math', 'Science') print(list(sorted(marks.keys())))
Output
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', 'Science')
Python Dictionary Comprehension
Dictionary comprehension is an elegant and concise way to create a new dictionary from an iterable in Python.
Dictionary comprehension consists of an expression pair (key: value) followed by a for
statement inside curly braces ()
.
Here is an example to make a dictionary with each item being a pair of a number and its square.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Output
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
This code is equivalent to
squares = () for x in range(6): squares(x) = x*x print(squares)
Output
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
A dictionary comprehension can optionally contain more for or if statements.
An optional if
statement can filter out items to form the new dictionary.
Here are some examples to make a dictionary with only odd items.
# Dictionary Comprehension with if conditional odd_squares = (x: x*x for x in range(11) if x % 2 == 1) print(odd_squares)
Output
(1: 1, 3: 9, 5: 25, 7: 49, 9: 81)
To learn more dictionary comprehensions, visit Python Dictionary Comprehension.
Other Dictionary Operations
Dictionary Membership Test
We can test if a key
is in a dictionary or not using the keyword in
. Notice that the membership test is only for the keys
and not for the values
.
# Membership Test for Dictionary Keys squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: True print(1 in squares) # Output: True print(2 not in squares) # membership tests for key only not value # Output: False print(49 in squares)
Output
True True False
Iterating Through a Dictionary
We can iterate through each key in a dictionary using a for
loop.
# Iterating through a Dictionary squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) for i in squares: print(squares(i))
Output
1 9 25 49 81
Dictionary Built-in Functions
Terbina dalam fungsi suka all()
, any()
, len()
, cmp()
, sorted()
, dan lain-lain yang biasa digunakan dengan kamus untuk melaksanakan tugas yang berbeza.
Fungsi | Penerangan |
---|---|
semua() | Kembali True jika semua kunci kamus Benar (atau jika kamus kosong). |
mana-mana () | Kembalikan True jika ada kunci kamus yang benar. Sekiranya kamus kosong, kembali False . |
len () | Kembalikan panjang (bilangan item) dalam kamus. |
cmp () | Membandingkan item dari dua kamus. (Tidak terdapat di Python 3) |
disusun () | Kembalikan senarai kunci yang disusun baru dalam kamus. |
Berikut adalah beberapa contoh yang menggunakan fungsi terbina dalam untuk berfungsi dengan kamus.
# Dictionary Built-in Functions squares = (0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: False print(all(squares)) # Output: True print(any(squares)) # Output: 6 print(len(squares)) # Output: (0, 1, 3, 5, 7, 9) print(sorted(squares))
Pengeluaran
Betul Salah 6 (0, 1, 3, 5, 7, 9)