Bài 10: Dictionaries trong lập trình Python – Các phương thức và cách sử dụng

Từ điển (Dictionaries) Python là một vùng chứa dữ liệu khác tương tự như danh sách (list) và bộ (tuple) dữ liệu với một điểm khác biệt chính. Dictionaries lưu trữ các cặp khóa:giá trị (key:value).  Mỗi cặp key:value trong Dictionaries ánh xạ khóa với giá trị liên quan của nó, làm cho nó được tối ưu hóa hơn. Dictionaries trong lập trình Python được phân loại thành hai yếu tố: Khóa (Key) và Giá trị (Value).

Danh mục bài học Python

Để thuận tiện, trong bài viết, chúng ta sử dụng Dict thay cho tên gọi Dictionaries. Điểm mấu chốt của cấu trúc dữ liệu này là cặp key:value

  • Các key (khóa) dùng để truy xuất value
  • Value (giá trị) có thể là một danh sách hoặc danh sách trong danh sách, số, v.v.

Những điều cần lưu ý khi sử dụng Dictionaries

  1. Khi thêm hoặc tạo Dict, tất cả các mục nhập phải ở định dạng cặp khóa: giá trị. Nếu khóa hoặc giá trị bị thiếu, sẽ thông báo lỗi. 
  2. Nếu một cặp khóa: giá trị được thêm vào Dict và khóa đã tồn tại trong Dict, khóa và giá trị cũ sẽ bị thay thế bởi khóa và giá trị mới.
  3. Các giá trị chỉ có thể được cập nhật khi chỉ định rõ khóa liên quan.
  4. Khi xóa một phần tử (là cặp khóa:giá trị) thì cả 2 sẽ xóa cùng nhau.
  5. Danh sách không thể được sử dụng làm khóa.
  6. Trong Dict, nếu có 2 khóa trùng tên, khi truy xuất, giá trị của khóa cuối cùng sẽ được chọn

Sau đây là các thao tác với Dict.

1. Khởi tạo

# Tạo một Dict rỗng
Dict1 = {}
print(Dict1) --> Kết quả: {}

# Tạo một Dict bao gồm key và value
Dict2 = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}  
print(Dict2['Tiffany']) --> Kết quả: 22

Hoặc:

# Tạo một Dict được khởi tạo bằng phương thức dict
x = dict(name='John', age=35, height=6) --> Tương đương với: x = {'name': 'john', 'age': 35, 'height': 6}
print(type(x)) --> Kết quả: <class 'dict'>
print(x['name']) --> Kết quả: John

2. Phương thức của Dict trong Python

Sao chép (copy)

Bạn cũng có thể sao chép toàn bộ Dict sang một Dict mới. Ví dụ: ở đây chúng ta đã sao chép Dict gốc sang tên 2 Dict mới là “Boys” và “Girls”.

Ví dụ:

Boys = {'Tim':18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22} 
studentX=Boys.copy()
studentY=Girls.copy()
print(studentX) --> Kết quả: {'Tim': 18,'Charlie':12,'Robert':25}
print(studentY) --> Kết quả: {'Tiffany':22}

# Truy xuất phần tử trong Dict
print(studentX['Tim']) --> Kết quả: 18
print(studentY['Tiffany']) --> Kết quả: 22

Cập nhật (update)

Bạn cũng có thể cập nhật Dict bằng cách thêm mới hoặc cập nhật từ cặp key:value hiện có. Khi thêm mới, cặp key:value sẽ được thêm vào cuối Dict, khi cập nhật, value cũ sẽ được thay thế bới value mới.

Ví dụ:

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Dict.update({"Tim":19}) --> Cập nhật value của key 'Tim', thay thế 18 bằng 19
# Hoặc
Dict["Tim"] = 19 --> Cập nhật trực tiếp không thông qua phương thức update()

print(Dict) --> Kết quả: {'Tim': 19,'Charlie':12,'Tiffany':22,'Robert':25}
Dict.update({"KinhKan":26}) --> Thêm mới cặp key:value vào cuối Dict
print(Dict) --> Kết quả: {'Tim': 19,'Charlie':12,'Tiffany':22,'Robert':25, 'KinhKan':26}

Hợp nhất 2 Dict bằng phương thức update()

my_dict1 = {"username": "XYZ", "email": "[email protected]", "location":"Mumbai"}
my_dict2 = {"firstName" : "Nick", "lastName": "Price"}

my_dict1.update(my_dict2)
print(my_dict1)

# Kết quả:
{'username': 'XYZ', 'email': '[email protected]', 'location': 'Mumbai', 'firstName': 'Nick', 'lastName': 'Price'}

Xóa phần tử (del)

Dict cho phép bạn tự do xóa bất kỳ phần tử nào khỏi danh sách. Giả sử bạn không muốn có tên Charlie trong danh sách, vì vậy bạn có thể xóa phần tử bằng đoạn mã sau:

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
# Xóa một phần tử	
del Dict['Charlie']
print(Dict) --> Kết quả: {'Tim': 18, 'Tiffany': 22, 'Robert': 25}

# Xóa toàn bộ Dict
del Dict

Phương thức pop()

Ngoài việc xóa phần tử trong Dict bằng lệnh del, chúng ta có thể xóa phần tử trong Dict bằng phương thức pop()

my_dict = {"username": "XYZ", "email": "[email protected]", "location":"Mumbai"}
my_dict.pop("username")
print(my_dict) --> Kết quả: {'email': '[email protected]', 'location': 'Mumbai'}

Phương thức clear()

Khi muốn làm trống (rỗng) một Dict, sử dụng phương thức clear()

Ví dụ:

my_dict = {"username": "XYZ", "email": "[email protected]", "location":"Mumbai"}
my_dict.clear() 
print(my_dict) --> Kết quả: {}

Phương thức items()

Phương thức items() trong Python trả về tất cả các cặp key:value của một Dict. Ví dụ:

Dict = {'Tim': 18, 'Charlie': 12, 'Tiffany': 22, 'Robert': 25}
print("Danh sách sinh viên [Tên:Tuổi]: %s" % list(Dict.items()))
# Hoặc:
print("Danh sách sinh viên [Tên:Tuổi]: ", list(Dict.items()))

# Kết quả:
Danh sách sinh viên [Tên:Tuổi]: [('Tim', 18), ('Charlie', 12), ('Tiffany', 22), ('Robert', 25)]

Phương thức get()

Phương thức get() của Dict trong Python trả về giá trị của key đã cho. Nếu key không tồn tại thì trả về None, hoặc trả về giá trị default do người dùng định nghĩa.

Cú pháp:

dict.get(key, default=None)

Tham số:

  • key: Đây là key để được tìm trong Dictionary.
  • default: Đây là giá trị được trả về trong trường hợp key không tồn tại.

Ví dụ:

dict1 = {'name': 'KinhKan', 'age': 26, 'address': 'Hanoi'}

print("Giá trị của key 'name' là: ", dict1.get('name')) --> Kết quả: KinhKan
print("Giá trị của key 'gender' là: ", dict1.get('gender')) --> Kết quả: None
print("Giá trị của key 'salary' là: ", dict1.get('salary', 'NaN')) --> Kết quả: NaN

Phương thức keys()

Phương thức keys() của Dict trong Python trả về tất cả các key của một Dict. Có thể dùng để kiểm tra sự tồn tại của một key trong Dict.

Cú pháp:

dict.keys()

Ví dụ 1:

dict1 = {'name': 'Kinh Kan', 'age': 22, 'address': 'Hanoi'}
print("Các key của dict1 là: ", dict1.keys()) --> Kết quả: Các key của dict1 là:  dict_keys(['name', 'age', 'address'])

Ví dụ 2: Kiểm tra sự tồn tại của key

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}

for key in list(Dict.keys()):
    if key in list(Boys.keys()):
        print("Có") --> Kết quả: Có
        break
    else:       
        print("Không")
   

Kết quả:

  • Vòng lặp for lấy từng key trong Dict, sau đó kiểm tra key có tồn tại trong danh sách key của Boys hay không
  • Nếu có: Hiển thị “Có” và lệnh break để thoát vòng lặp
  • Ngược lại: Hiển thị “Không” và tiếp tục

Phương thức sort()

Sử dụng phương thức sort() để sắp xếp các phần tử trong Dict

Cú pháp:

dict.sort()

Ví dụ:

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}

Students = list(Dict.keys())
Students.sort()
for S in Students:
    print(":".join([S,str(Dict[S])]))
    # Hoặc
    print(S+":"+str(Dict[S]))
# Kết quả:
Charlie: 12
Robert: 25
Tiffany: 22
Tim: 18

Giải thích:

Phương thức sort thực hiện sắp xếp các key, chính vì vậy, không thể thực hiện sắp xếp trực tiếp trên Dict. Điều đó sẽ được thực hiện trên danh sách, sau đó hiển thị value dựa vào key đã sắp xếp.

  • Câu lệnh Students = list(Dict.keys()) để lấy danh sách các key của Dict
  • Câu lệnh Students.sort() để sắp xếp các key trong đối tượng Students
  • Câu lệnh for S in Students sẽ duyệt lần lượt từng key đã được sắp xếp
  • Câu lệnh print(S+”:”+str(Dict[S])) để in ra giá trị của phần tử tương ứng key S trong Dict
  • Trong đoạn mã trên có sử dụng câu lệnh print(“:”.join([S,str(Dict[S]]))): phương thức join(string, string,…) dùng để nối các stringvà các string được phân cách bởi dấu “:”

Phương thức len()

Phương thức len() trả về số phần tử của Dict

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print("Số phần tử: %d" % len(Dict)) --> Kết quả: 4
# Hoặc
print("Số phần tử: " + str(len(Dict)))

Tóm lược:

  • Dict trong ngôn ngữ lập trình là một kiểu cấu trúc dữ liệu được sử dụng để lưu trữ thông tin.
  • Dict Python được định nghĩa bởi hai phần tử Khóa và Giá trị.
  • Dict quản lý giá trị (value) dựa vào khóa (key)
  • Giá trị có thể là một danh sách hoặc danh sách trong danh sách, số, v.v.
  • Nếu khóa trùng nhau, khi truy xuất giá trị của khóa cuối cùng sẽ được chọn. Lưu ý Dict phân biệt chữ thường, chữ hoa
  • Ví dụ:

my_dict = {“Tên”: “ABC”, “Địa chỉ”: “Mumbai”, “Tuổi”: 30, “Tên”: “XYZ”} print(my_dict[“Tên”]) --> Kết quả: XYZ

Xem Thêm

Bạn đang muốn tìm kiếm tên đẹp và độc đáo cho con, doanh nghiệp? Bạn muốn biết thêm về các thông tin đặc biệt và ý nghĩa của những tên đẹp?

đến ngay tenhay365.com – Nơi Tìm Kiếm Tên Hay và Thông Tin Độc Đáo!