Hàm dict là một hàm trong các Built-in Functions của ngôn ngữ lập trình Python được sử dụng để tạo một đối tượng có kiểu dữ liệu từ điển (dictionary) mới hoặc biến đổi các kiểu dữ liệu đã có thành dạng từ điển.
Kiểu dữ liệu từ điển trong Python cho phép lưu trữ dữ liệu theo cặp key-value, trong đó mỗi key là duy nhất và không thay đổi, và mỗi key tương ứng với một giá trị (value).
1.Cú pháp hàm dict
Hàm dict bản chất là một hàm khởi tạo (constructor) được sử dụng để tạo mới một đối tượng kiểu từ điển (dict) trong Python. Nó được coi như là một hàm built-in, có sẵn sẵn trong Python và không yêu cầu phải import module nào khác để sử dụng.
Hàm dict là một hàm trong các Built-in Functions của ngôn ngữ lập trình Python có 3 cú pháp chính:
dict(**kwargs)
dict(mapping, **kwargs)
dict(iterable, **kwargs)
Tham số
- Tạo từ các cặp key-value truyền trực tiếp:
**kwargs
: Các cặp giá trị key-value truyền vào dưới dạng đối số với cú phápkey=value
.
- Tạo từ một mapping object:
mapping
: Một mapping object như một từ điển (dictionary) sẽ được sử dụng để tạo một bản sao mới.
- Tạo từ một iterable object:
iterable
: Một iterable object chứa các cặp giá trị key-value, thường là danh sách các tuple.
Kết quả trả về
- Hàm
dict
trả về một đối tượng từ điển mới được tạo dựa trên dữ liệu được cung cấp theo các cú pháp và tham số tương ứng.
2. Kiểu dữ liệu dictionary trong Python
Kiểu dữ liệu dictionary trong Python (từ điển) là một cấu trúc dữ liệu quan trọng và mạnh mẽ, cho phép lưu trữ dữ liệu theo cặp key-value.
Dưới đây là hai ứng dụng phổ biến của kiểu dữ liệu dictionary trong Python:
2.1. Lưu trữ và truy xuất dữ liệu có cấu trúc
Kiểu dữ liệu dictionary được sử dụng để lưu trữ dữ liệu có cấu trúc, ví dụ:
person = {
'name': 'John Doe',
'age': 30,
'location': 'New York'
}
Trong trường hợp này, chúng ta lưu trữ thông tin về một người (tên, tuổi, địa điểm) bằng cách gán mỗi thông tin với một key tương ứng.
2.2. Lưu trữ và truy xuất dữ liệu có liên kết
Kiểu dữ liệu dictionary cũng được sử dụng để lưu trữ và truy xuất dữ liệu có liên kết. Điều này đặc biệt hữu ích khi cần ánh xạ một đối tượng, thực thể, hoặc thuộc tính của một đối tượng. Ví dụ:
student_grades = {
'Alice': 95,
'Bob': 89,
'Charlie': 92
}
Ở đây, chúng ta lưu trữ điểm số của mỗi học sinh dựa trên tên của họ. Khi cần kiểm tra điểm của một học sinh cụ thể, chỉ cần truy xuất thông tin dựa trên key (tên của học sinh).
2.3. Kiểu dữ liệu dictionary và định dạng JSON
Kiểu dữ liệu dictionary trong Python và định dạng JSON (JavaScript Object Notation) thực sự có rất nhiều nét tương đồng và đều đại diện cho cấu trúc dữ liệu ánh xạ key-value.
Sự tương đồng mạnh mẽ này đã đặc biệt phổ biến và quan trọng trong việc làm việc với dữ liệu trong các ứng dụng web, xử lý API và trao đổi dữ liệu.
Dưới đây là điểm nổi bật về sự tương đồng này:
Ánh Xạ Key-Value: Cả kiểu dữ liệu dictionary trong Python và JSON đều sử dụng cấu trúc dữ liệu ánh xạ key-value, giúp tổ chức và truy cập dữ liệu một cách hiệu quả.
Dễ Chuyển Đổi: Python cung cấp các thư viện chuẩn cho phép dễ dàng chuyển đổi dữ liệu giữa dictionary và JSON, giữa đó có các hàm như json.dumps()
(chuyển dictionary thành JSON string) và json.loads()
(chuyển JSON string thành dictionary).
Phổ Biến Trong Web Development: JSON thường được sử dụng để truyền tải dữ liệu giữa máy chủ và trình duyệt web, cũng như trong việc làm việc với các API. Dictionary trong Python được sử dụng để tương tự trong mã nguồn máy chủ.
Tiêu Chuẩn Giao Tiếp: JSON đã trở thành một tiêu chuẩn cho giao tiếp dữ liệu giữa các ứng dụng, đặc biệt trong môi trường web. Nó giúp định dạng dữ liệu một cách rõ ràng và đơn giản.
Tích Hợp Mạnh Mẽ: JSON được hỗ trợ rộng rãi trong nhiều ngôn ngữ lập trình khác nhau, làm cho việc trao đổi dữ liệu giữa các ứng dụng viết bằng các ngôn ngữ khác nhau trở nên dễ dàng và linh hoạt.
3. Một số ví dụ
3.1. Sử dụng dict(**kwargs)
để tạo từ điển
# Tạo từ điển từ các đối số khóa-giá trị
kwargs_dict = dict(name='Alice', age=30, city='New York')
print("Từ điển từ **kwargs:", kwargs_dict)
# Insert một cặp khóa-giá trị mới
kwargs_dict['address'] = '123 Main St.'
print("Từ điển sau khi insert:", kwargs_dict)
# Update giá trị của khóa 'name'
kwargs_dict['name'] = 'Alice Smith'
print("Từ điển sau khi update:", kwargs_dict)
3.2. Sử dụng dict(mapping, **kwargs) để tạo từ điển
# Đối tượng mapping (ví dụ: dictionary)
existing_dict = {'name': 'Alice', 'age': 25}
# Tạo từ điển từ mapping object và các đối số mới
updated_dict = dict(existing_dict, city='New York', age=30)
print("Từ điển từ mapping và **kwargs:", updated_dict)
# Kết nối với một dictionary khác
another_dict = {'phone': '123-456-7890'}
updated_dict.update(another_dict)
print("Từ điển sau khi kết nối với dictionary khác:", updated_dict)
3.3. Sử dụng dict(iterable, **kwargs) để tạo từ điển
# Đối tượng iterable (ví dụ: danh sách các cặp key-value)
iterable_pairs = [('name', 'Alice'), ('age', 30)]
# Tạo từ điển từ iterable và các đối số mới
iterable_dict = dict(iterable_pairs, city='New York')
print("Từ điển từ iterable và **kwargs:", iterable_dict)
# Kết nối với một dictionary khác
another_dict = {'phone': '123-456-7890'}
iterable_dict.update(another_dict)
print("Từ điển sau khi kết nối với dictionary khác:", iterable_dict)
3.4. Tạo Từ Điển từ Iterable thông qua hàm
def create_dict_from_iterable(iterable, **kwargs):
"""
Tạo từ điển từ một iterable và thêm các đối số kwargs.
Args:
iterable (dict): Đối tượng iterable chứa các cặp key-value.
**kwargs: Cặp giá trị key-value.
Returns:
dict: Từ điển được tạo.
"""
new_dict = dict(iterable, **kwargs)
return new_dict
# Đối tượng iterable (ví dụ: danh sách các cặp key-value)
iterable_pairs = [('a', 1), ('b', 2)]
# Tạo từ điển từ iterable và thêm các giá trị mới
result_dict = create_dict_from_iterable(iterable_pairs, c=3, d=4)
print("Từ điển từ iterable và **kwargs:", result_dict)
3.5. Biến đổi Mapping Object thành Dictionary
def transform_mapping_to_dict(mapping, **kwargs):
"""
Biến đổi một mapping object thành một từ điển và thêm các đối số kwargs.
Args:
mapping (dict): Đối tượng mapping (ví dụ: dictionary).
**kwargs: Cặp giá trị key-value.
Returns:
dict: Từ điển được tạo từ mapping object và kwargs.
"""
transformed_dict = dict(mapping, **kwargs)
return transformed_dict
# Mapping object có sẵn (ví dụ: dictionary)
existing_mapping = {'name': 'Alice', 'age': 25}
# Biến đổi mapping object thành từ điển và thêm các giá trị mới
transformed_dict = transform_mapping_to_dict(existing_mapping, city='New York')
print("Từ điển từ mapping object và **kwargs:", transformed_dict)
4. Các hàm cung cấp sẵn trong kiểu dữ liệu từ điển
Kiểu dữ liệu Dictionary trong ngôn ngữ lập trình Python là một cấu trúc dữ liệu linh hoạt và mạnh mẽ. Nó cung cấp một số hàm tích hợp sẵn (Built-in Dictionary Functions) để hỗ trợ người lập trình trong việc làm việc với và xử lý dữ liệu trong từ điển.
Dưới đây là một số hàm quan trọng mà Python cung cấp cho kiểu dữ liệu Dictionary:
STT | Tên Hàm | Tham số | Mục Đích |
---|---|---|---|
1 | clear() | không bắt buộc | Xóa tất cả các cặp khóa-giá trị trong từ điển. |
2 | copy() | không bắt buộc | Tạo một bản sao (shallow copy) của từ điển. |
3 | fromkeys() | keys (bắt buộc), value | Tạo một từ điển từ các khóa trong keys và giá trị là value cho tất cả các khóa. |
4 | get() | key (bắt buộc), default | Trả về giá trị tương ứng với key. Nếu key không tồn tại, trả về default hoặc None. |
5 | items() | không bắt buộc | Trả về một view chứa tất cả các cặp khóa-giá trị (key-value) trong từ điển. |
6 | keys() | không bắt buộc | Trả về một view chứa tất cả các khóa trong từ điển. |
7 | pop() | key (bắt buộc) | Xóa và trả về giá trị của key. Nếu key không tồn tại, trả về default hoặc khởi tạo KeyError. |
8 | popitem() | không bắt buộc | Xóa và trả về một cặp khóa-giá trị (key-value) ngẫu nhiên. |
9 | setdefault() | key (bắt buộc), default | Trả về giá trị tương ứng với key. Nếu key không tồn tại, thêm mới với giá trị là default. |
10 | update() | iterable hoặc **kwargs | Cập nhật từ điển với các cặp khóa-giá trị từ iterable hoặc các đối số **kwargs. |
11 | values() | không bắt buộc | Trả về một view chứa tất cả các giá trị trong từ điển. |
5. Lớp dict
Lớp dict
là một trong những lớp cơ bản được định nghĩa sẵn trong Python và là một phần quan trọng của ngôn ngữ này. Lớp dict
đại diện cho kiểu dữ liệu từ điển (dictionary), cho phép lưu trữ dữ liệu theo cặp khóa – giá trị (key-value pairs).
Đây là một số điểm quan trọng về lớp dict
trong Python:
Tính thứ tự:
- Không có thứ tự cụ thể: Trong các phiên bản Python trước 3.7, dictionaries không đảm bảo bất kỳ thứ tự cụ thể nào cho các cặp khóa-giá trị. Từ phiên bản Python 3.7 trở đi, dictionaries được duyệt qua theo thứ tự chúng được thêm vào, nhưng bạn không nên dựa vào thứ tự này trong các phiên bản cũ hơn.
Thành phần của kiểu dữ liệu Built-in:
- Lớp
dict
là một kiểu dữ liệu built-in (được xây dựng sẵn) trong Python, nghĩa là không cần phải import bất kỳ thư viện nào để sử dụng nó.
Các phương thức và thuộc tính:
- Lớp
dict
có nhiều phương thức và thuộc tính cho phép thêm, xóa, truy cập và duyệt các phần tử, thay đổi cấu trúc dữ liệu, và thực hiện các thao tác phổ biến khác với từ điển.
Cặp khóa – giá trị (Key-Value Pairs):
- Dữ liệu trong từ điển được tổ chức dưới dạng các cặp khóa – giá trị, trong đó mỗi khóa phải là duy nhất và dùng để xác định giá trị tương ứng.
Khóa có thể là bất kỳ đối tượng băm (Hashable):
- Các khóa trong từ điển phải là bất kỳ đối tượng nào có thể băm (hashable), bao gồm các đối tượng không thay đổi như chuỗi, số nguyên, tuple.