Dictionary

Kiểu Dữ Liệu Dictionary

Dictionary là kiểu dữ liệu chứa một tập hợp các phần tử trong đó mỗi phần tử được gắn với một key (khoá). Khác với dữ liệu sequence thì key của dictionary có thể là number (bao gồm cả số thập phân), string hoặc tuple... Các phần tử trong dictionary được tách biệt với nhau bởi dấu ,.

Ví dụ:

languageCreators = {"python": "Guido van Rossum", "php": "Rasmus Lerdorf"}

Biến languageCreators ở ví dụ trên được khởi tạo với giá trị thuộc kiểu dictionary với 2 phần tử được đánh key lần lượtt là pythonphp.

Quản Lý Phần Tử

Để lấy ra giá trị của một phần tử chúng ta sử dụng toán tử [] giống như kiểu dữ liệu sequence:

print(languageCreators["python"]) # Hiển Thị: Guido van Rossum

Giá trị key của các phần tử khác nhau là khác nhau. Nếu như bạn sử dụng cùng một key hai lần trong dictionary thì phần tử với cùng key đó nhưng xuất hiện lần thứ 2 sẽ được dùng thay cho phần tử đầu tiên:

languageCreators = {"python": "Rossum", "python": "Guido van Rossum"}
print(languageCreators["python"]) ## Hiển thị: Guido van Rossum

Giống với kiểu dữ liệu list, chúng ta có thể thay đổi được giá trị của các phần tử trong dictionary cũng như thêm/xoá các phần tử vào/ra khỏi dictionary (hay ta còn nói dữ liệu kiểu list và dictionary là mutable). Do đó bạn hoàn toàn có thể tạo một dictionary rỗng và thêm các phần tử sau đó:

languageCreators = {}
languageCreators["python"] = "Guido van Rossum"
languageCreators["php"] = "Rasmus Lerdorf"

Bạn có thể thấy rằng việc thêm một phần tử vào dictionary có thể được thực hiện thông qua toán tử []. Điều này là không thể với kiểu dữ liệu list. Ví dụ nếu chúng ta chạy đoạn code sau:

aList = ["one", "two"]
aList[2] = "three"

Python sẽ báo lỗi:

Traceback (most recent call last):
  File "list.py", line 2, in <module>
    aList[2] = "three"
IndexError: list assignment index out of range

Để thay đổi giá trị của phần tử:

languageCreators = {"python": "Rossum", "php": "Rasmus Lerdorf"}
languageCreators["python"] = "Guido van Rossum"

Để xoá một phần tử ra khỏi dictionary chúng ta sử dụng câu lệnh del:

languageCreators = {"python": "Guido van Rossum", "php": "Rasmus Lerdorf"}
del languageCreators["php"]
print(languageCreators) # {'python': 'Guido van Rossum'}

Sử Dụng Hàm Với Dictionary

Để đếm số lượng phần tử của dictionary chúng ta sử dụng hàm len() giống với dữ liệu kiểu sequence:

languageCreators = {"python": "Guido van Rossum", "php": "Rasmus Lerdorf"}
print(len(languageCreators)) # Hiển thị: 2

Sử dụng hàm max() với kiểu dữ liệu dictionary sẽ trả về giá trị key lớn nhất:

languageCreators = {"python": "Guido van Rossum", "php": "Rasmus Lerdorf"}
print(max(languageCreators)) # Hiển thị: python
presidentsOfAmerica = {2017: "Donald Trump", 2009: "Barack Obama"}
print(max(presidentsOfAmerica)) # 2017

Ngược lại hàm min() sẽ trả về giá trị key nhỏ nhất:

presidentsOfAmerica = {2017: "Donald Trump", 2009: "Barack Obama"}
print(min(presidentsOfAmerica)) # 2009

Các Method Phổ Biến Của Dictionary

Để kiểm tra một key có tồn tại trong dictionary hay không chúng ta sử dụng method .has_key(). Method này sẽ trả về giá trị kiểu boolean:

languageCreators = {"python": "Guido van Rossum", "php": "Rasmus Lerdorf"}
print(languageCreators.has_key("python")) # Hiển Thị: True
print(languageCreators.has_key("ruby")) # Hiển Thị: False

Để lấy ra tất cả các key của phần tử trong dictionary chúng ta sử dụng method .keys(). Method này trả về dữ liệu kiểu list:

languageCreators = {"python": "Guido van Rossum", "php": "Rasmus Lerdorf"}
print(languageCreators.keys()) # Hiển thị: ['python', 'php']

Để lấy ra tất cả các giá trị của phần tử trong dictionary chúng ta sử dụng method .values(). Method này cũng trả về dữ liệu kiểu list:

languageCreators = {"python": "Guido van Rossum", "php": "Rasmus Lerdorf"}
print(languageCreators.values()) # Hiển thị: ['Guido van Rossum', 'Rasmus Lerdorf']

Để lấy ra giá trị của một phần tử với key cho trước chúng ta sử dụng method .get():

languageCreators = {"python": "Guido van Rossum", "php": "Rasmus Lerdorf"}
print(languageCreators.get('php')) # Hiển thị: Rasmus Lerdorf

Nếu như trong dictionary không tồn tại phần tử với key được sử dụng thì Python sẽ trả về giá trị là None:

print(languageCreators.get('ruby')) # Hiển thị: None

None là giá trị tương đối đặc biệt của Python nó có nghĩa rằng không có giá trị nào.

python
Thêm Bình Luận: