Kiểu từ điển dictionary trong python
Kiểu dữ liệu Dictionary trong Python (kiểu từ điển) là một tập hợp các cặp key – value (khóa – giá trị) không có thứ tự, có thể thay đổi và lập chỉ mục (truy cập phần tử theo chỉ mục).
1. Khai báo dictionary
Dictionary trong Python được khai báo với cặp dấu ngoặc nhọn {}
bao ngoài giống như với Set. Bên trong các phần tử theo cặp (khóa key
và giá trị value
) được phân tách bởi dấu phẩy (,
) phân tách giữa khóa và giá trị của từng phần tử bởi dấu hai chấm (:
). Cú pháp chung như sau:
name = {key_1: value_1, key_2: value_2, ..., key_n: value_n}
- Nếu như các phần tử trong danh sách
list
được truy xuất thông qua vị tríindex
thì phần tử trong từ điển được truy xuất qua khóa (key). - Khóa
key
phải là một kiểu dữ liệu không thay đổi (immutable). Nó có thể là một chuỗi string, số… nhưng nó phải là duy nhất trong từ điển. - Giá trị
value
có thể là chuỗi, số hoặc các dữ liệu có cấu trúc như list, tuple, set hoặc thậm chí là dictionary.
Ví dụ sau tạo một từ điển dictCar
gồm có 3 phần tử:
dictCar = { "brand": "Honda", "model": "Honda Civic", "year": 1972 } print(dictCar)
Kết quả:
{'brand': 'Honda', 'model': 'Honda Civic', 'year': 1972}
Chúng ta cũng có thể sử dụng hàm có sẵn dict()
để khai báo một từ điển dictionary.
friend_ages = dict({"Rolf": 24, "Adam": 30, "Anne": 27})
hoặc
friend_ages = dict([("Rolf", 24), ("Adam", 30), ("Anne", 27)])
2. Truy xuất giá trị của từ điển
Một từ điển dictionary có thể truy xuất giá trị từng phần tử thông qua các khóa key
theo cú pháp:
name[key]
Ví dụ, trong từ điển friend_ages
ở trên, chúng ta có thể truy xuất thông tin (giá trị) của key Binh bằng câu lệnh friend_ages['Binh']
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} print(friend_ages['Binh']) #kết quả 30
Ngoài ra bạn cũng có thể sử dụng hàm get()
để truy cập item của Dictionary trong Python:
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} print(friend_ages.get('Binh')) #kết quả 30
3. Thay đổi giá trị của dictionary trong Python
Dictionary trong Python có thể thay đổi thêm bớt các phần tử, thay đổi giá trị của các phần tử hiện có. Để thay đổi giá trị của phần tử trong dictionary thì ta cũng là tương tự như đối với list là truy cập đến phần tử cần truy cập và thay đổi giá trị của nó.
Ví dụ, chúng ta thay đổi tuổi của Binh
thành 50 bằng câu lệnh gán như sau:
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} friend_ages['Binh'] = 50 print(friend_ages['Binh'])#kết quả 50
4. Duyệt qua các phần tử của dict
Bạn có thể duyệt qua một Dictionary bằng cách sử dụng vòng lặp for. Khi duyệt một Dictionary bằng vòng lặp for, giá trị trả về là các khóa key
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} for x in friend_ages: print(x)
Kết quả trả về:
An
Binh
Cuc
Dat
Hoa
Lúc này, bạn có thể dùng hàm get()
để lấy giá trị tương ứng của khóa hoặc dùng cách truy cập đến phần tử của dict như phần 2 ở trên:
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} for x in friend_ages: print(friend_ages[x])
Kết quả trả về:
24
30
27
30
18
Bạn cũng có thể sử dụng hàm items()
để lấy về một danh sách tất cả các cặp (key-value) của một Dictionary. Sử dụng hàm keys()
hoặc hàm values()
để lấy về danh sách tất cả các key
hoặc các value
của một từ điển.
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} print(friend_ages.items()) #kết quả dict_items([('An', 24), ('Binh', 30), ('Cuc', 27), ('Dat', 30), ('Hoa', 18)]) print(friend_ages.keys()) #kết quả dict_keys(['An', 'Binh', 'Cuc', 'Dat', 'Hoa']) print(friend_ages.values()) #kết quả dict_values([24, 30, 27, 30, 18])
5. Một số phương thức trong Dictionary của Python
5.1. Kiểm tra nếu key tồn tại
Để xác định xem một khóa key
được chỉ định có tồn tại trong từ điển hay không, sử dụng từ khóa in
:
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} print('Binh' in friend_ages) #kết quả True print('Mai' in friend_ages) #kết quả False
Hoặc sử dụng hàm dict.has-key(key)
. Hàm này trả về True
nếu key
có mặt trong Dictionary, nếu không thì trả về False
. Tuy nhiên hàm này đã bị xóa kể từ phiên bản Python 3.x.
5.2. Độ dài của một Dictionary trong Python
Để xác định có bao nhiêu item (cặp khóa-giá trị) trong Dictionary, hãy sử dụng hàm len()
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} print(len(friend_ages)) #kết quả 5
5.3. Thêm phần tử vào Dictionary
Thêm một item vào Dictionary được thực hiện bằng cách sử dụng khóa mới và gán giá trị cho nó:
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} friend_ages['Lan'] = 19 print(friend_ages) #{'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18, 'Lan': 19}
5.4. Xóa phần tử trong dictionary
Có nhiều phương pháp để loại bỏ các item của một Dictionary.
Cách thứ nhất, để xóa một phần tử trong dictionary thì chúng ta sử dụng lệnh del
và chọn phần tử cần xóa. Ví dụ:
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} del friend_ages['Binh'] print(friend_ages) #kết quả {'An': 24, 'Cuc': 27, 'Dat': 30, 'Hoa': 18}
Cách thứ hai, xóa item của Dictionary bằng hàm pop('key')
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} friend_ages.pop('Binh') print(friend_ages) #kết quả {'An': 24, 'Cuc': 27, 'Dat': 30, 'Hoa': 18}
Cách thứ 3, xóa item của Dictionary bằng hàm popitem()
. Hàm popitem()
xóa item cuối cùng của từ điển (trong các phiên bản trước 3.7, một phần tử ngẫu nhiên được xóa).
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} friend_ages.popitem() print(friend_ages) #kết quả {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30}
Nếu bạn muốn xóa tất cả các phần tử bên trong dictionary thì bạn sử dụng phương thức clear
theo cú pháp:
name.clear()
Trong đó, name
là tên của dictionary mà bạn muốn xóa hết phần tử.
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} friend_ages.clear() print(friend_ages) #kết quả {}
5.5. Sao chép một từ điển
Bạn không thể sao chép từ điển chỉ bằng cách gán dict2 = dict1
, bởi vì khi đó dict2
sẽ chỉ là một tham chiếu đến dict1
và những thay đổi được thực hiện dict1
cũng sẽ tự động được thực hiện dict2
.
Có nhiều cách để tạo một bản sao, một trong các cách đó là sử dụng hàm copy()
được xây dựng sẵn trong Dictionary.
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} mate_ages = friend_ages.copy() friend_ages.pop('Binh') print(friend_ages) #kết quả {'An': 24, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} print(mate_ages) #kết quả {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18}
Cách tiếp theo là chúng ta sử dụng hàm dict()
để tạo một từ điển mới từ các phần tử của từ điển đã có.
friend_ages = {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} mate_ages = dict(friend_ages) friend_ages.pop('Binh') print(friend_ages) #kết quả {'An': 24, 'Cuc': 27, 'Dat': 30, 'Hoa': 18} print(mate_ages) #kết quả {'An': 24, 'Binh': 30, 'Cuc': 27, 'Dat': 30, 'Hoa': 18}
6. Dictionary lồng nhau trong Python
Một Dictionary cũng có thể chứa nhiều Dictionary, điều này được gọi là từ điển lồng nhau.
myCars = { 'car1' : { 'brand': 'Honda', 'year' : 2009 }, 'car2' : { 'brand': 'Yamaha', 'year' : 2019 }, 'car3' : { 'brand': 'Honda', 'year' : 2021 } } print(myCars)
Kết quả trả về:
{'car1': {'brand': 'Honda', 'year': 2021}, 'car2': {'brand': 'Yamaha', 'year': 2019}}