Trong Python, từ điển (dictionary) là một kiểu dữ liệu tích hợp sẵn lưu trữ dữ liệu dưới dạng cặp khóa-giá trị. Nó là một tập hợp không có thứ tự, có thể thay đổi và được lập chỉ mục. Mỗi khóa trong từ điển là duy nhất và ánh xạ đến một giá trị. Từ điển thường được sử dụng để lưu trữ dữ liệu có liên quan, chẳng hạn như thông tin liên quan đến một thực thể hoặc đối tượng cụ thể, nơi bạn có thể nhanh chóng truy xuất một giá trị dựa trên khóa của nó.
Từ điển của Python là một ví dụ về loại ánh xạ. Một đối tượng ánh xạ ' ánh xạ' giá trị của một đối tượng đến một đối tượng khác. Để thiết lập ánh xạ giữa một khóa và một giá trị, ký hiệu hai chấm (:) được đặt giữa hai đối tượng.
Each key-value pair is separated by a comma and enclosed within curly braces {}. The key and value within each pair are separated by a colon (:), forming the structure key:value.
Dưới đây là một số ví dụ về đối tượng từ điển trong Python −
capitals = {"Maharashtra":"Mumbai", "Gujarat":"Gandhinagar", "Telangana":"Hyderabad", "Karnataka":"Bengaluru"} numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"} marks = {"Savita":67, "Imtiaz":88, "Laxman":91, "David":49}
Dưới đây là những tính năng chính của từ điển −
Unordered − Các phần tử trong một từ điển không có thứ tự cụ thể. Các từ điển trong Python trước phiên bản 3.7 không duy trì thứ tự chèn. Bắt đầu từ Python 3.7, các từ điển duy trì thứ tự chèn như một tính năng của ngôn ngữ.
Mutable − Bạn có thể thay đổi, thêm hoặc xóa các mục sau khi từ điển đã được tạo.
Indexed − Mặc dù từ điển không có chỉ mục số, nhưng chúng sử dụng khóa làm chỉ mục để truy cập các giá trị liên quan.
Unique Keys − Mỗi khóa trong một từ điển phải là duy nhất. Nếu bạn cố gắng gán một giá trị cho một khóa đã tồn tại, giá trị cũ sẽ bị thay thế bằng giá trị mới.
Heterogeneous − Các khóa và giá trị trong từ điển có thể là bất kỳ kiểu dữ liệu nào.
Chỉ có số, chuỗi hoặc tuple có thể được sử dụng làm khóa. Tất cả chúng đều là bất biến. Bạn có thể sử dụng một đối tượng của bất kỳ loại nào làm giá trị. Do đó, các định nghĩa từ điển sau đây cũng hợp lệ −
d1 = {"Fruit":["Mango","Banana"], "Flower":["Rose", "Lotus"]} d2 = {('India, USA'):'Countries', ('New Delhi', 'New York'):'Capitals'} print (d1) print (d2)
Nó sẽ tạo ra output −
{'Fruit': ['Mango', 'Banana'], 'Flower': ['Rose', 'Lotus']} {'India, USA': 'Countries', ('New Delhi', 'New York'): 'Capitals'}
Python không chấp nhận các đối tượng có thể thay đổi như danh sách (list) làm khóa, và sẽ phát sinh lỗi TypeError.
d1 = {["Mango","Banana"]:"Fruit", "Flower":["Rose", "Lotus"]} print (d1)
Nó sẽ gây ra một TypeError −
Traceback (most recent call last): File "C:\Users\Sairam\PycharmProjects\pythonProject\main.py", line 8, in <module> d1 = {["Mango","Banana"]:"Fruit", "Flower":["Rose", "Lotus"]} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: unhashable type: 'list'
Bạn có thể gán một giá trị cho nhiều khóa trong một từ điển, nhưng một khóa không thể xuất hiện nhiều hơn một lần trong một từ điển.
d1 = {"Banana":"Fruit", "Rose":"Flower", "Lotus":"Flower", "Mango":"Fruit"} d2 = {"Fruit":"Banana","Flower":"Rose", "Fruit":"Mango", "Flower":"Lotus"} print (d1) print (d2)
Nó sẽ tạo ra output −
{'Banana': 'Fruit', 'Rose': 'Flower', 'Lotus': 'Flower', 'Mango': 'Fruit'} {'Fruit': 'Mango', 'Flower': 'Lotus'}
Bạn có thể tạo một từ điển trong Python bằng cách đặt một chuỗi các cặp khóa-giá trị phân tách bằng dấu phẩy bên trong dấu ngoặc nhọn {}, với dấu hai chấm : phân tách mỗi khóa và giá trị liên quan của nó. Ngoài ra, bạn có thể sử dụng hàm dict().
Ví dụ dưới đây minh họa cách tạo một từ điển có tên "student_info" bằng cả dấu ngoặc nhọn và hàm dict() −
# Creating a dictionary using curly braces sports_player = { "Name": "Sachin Tendulkar", "Age": 48, "Sport": "Cricket" } print ("Dictionary using curly braces:", sports_player) # Creating a dictionary using the dict() function student_info = dict(name="Alice", age=21, major="Computer Science") print("Dictionary using dict():",student_info)
Kết quả được tạo ra như sau −
Dictionary using curly braces: {'Name': 'Sachin Tendulkar', 'Age': 48, 'Sport': 'Cricket'} Dictionary using dict(): {'name': 'Alice', 'age': 21, 'major': 'Computer Science'}
Bạn có thể truy cập giá trị liên kết với một khóa cụ thể bằng cách sử dụng dấu ngoặc vuông [] hoặc phương thức get().
student_info = { "name": "Alice", "age": 21, "major": "Computer Science" } # Accessing values using square brackets name = student_info["name"] print("Name:",name) # Accessing values using the get() method age = student_info.get("age") print("Age:",age)
Kết quả thu được như sau −
Name: Alice Age: 21
student_info = { "name": "Alice", "age": 21, "major": "Computer Science" } # Modifying an existing key-value pair student_info["age"] = 22 # Adding a new key-value pair student_info["graduation_year"] = 2023 print("The modified dictionary is:",student_info)
Đầu ra của đoạn mã trên như sau −
The modified dictionary is: {'name': 'Alice', 'age': 22, 'major': 'Computer Science', 'graduation_year': 2023}
Bạn có thể xóa các mục bằng cách sử dụng câu lệnh del, phương thức pop() hoặc phương thức popitem().
student_info = { "name": "Alice", "age": 22, "major": "Computer Science", "graduation_year": 2023 } # Removing an item using the del statement del student_info["major"] # Removing an item using the pop() method graduation_year = student_info.pop("graduation_year") print(student_info)
Dưới đây là đầu ra của đoạn mã trên −
{'name': 'Alice', 'age': 22}
Bạn có thể lặp qua các khóa, giá trị hoặc cặp khóa-giá trị trong một từ điển bằng cách sử dụng vòng lặp −
student_info = { "name": "Alice", "age": 22, "major": "Computer Science", "graduation_year": 2023 } # Iterating through keys for key in student_info: print("Keys:",key, student_info[key]) # Iterating through values for value in student_info.values(): print("Values:",value) # Iterating through key-value pairs for key, value in student_info.items(): print("Key:Value:",key, value)
Sau khi thực thi đoạn mã trên, chúng ta nhận được đầu ra sau:
Keys: name Alice Keys: age 22 Keys: major Computer Science Keys: graduation_year 2023 Values: Alice Values: 22 Values: Computer Science Values: 2023 Key:Value: name Alice Key:Value: age 22 Key:Value: major Computer Science Key:Value: graduation_year 2023
Giá trị của từ điển không có bất kỳ hạn chế nào. Chúng có thể là bất kỳ đối tượng Python tùy ý nào, có thể là đối tượng chuẩn hoặc đối tượng do người dùng định nghĩa. Tuy nhiên, điều đó không đúng với các khóa.
Có hai điểm quan trọng cần nhớ về khóa của từ điển −
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'} print ("dict['Name']: ", dict['Name'])
Khi đoạn mã trên được thực thi, nó sẽ tạo ra kết quả sau −
dict['Name']: Manni
dict = {['Name']: 'Zara', 'Age': 7} print ("dict['Name']: ", dict['Name'])
Khi đoạn mã trên được thực thi, nó sẽ tạo ra kết quả sau −
Traceback (most recent call last): File "test.py", line 3, in <module> dict = {['Name']: 'Zara', 'Age': 7}; TypeError: unhashable type: 'list'
Trong Python, các toán tử sau đây được định nghĩa để sử dụng với các toán hạng từ điển. Trong ví dụ, các đối tượng từ điển sau đây được sử dụng.
d1 = {'a': 2, 'b': 4, 'c': 30} d2 = {'a1': 20, 'b1': 40, 'c1': 60}
Operator | Description | Example |
---|---|---|
dict[key] | Extract/assign the value mapped with key | print (d1['b']) retrieves 4 d1['b'] = 'Z' assigns new value to key 'b' |
dict1|dict2 | Union of two dictionary objects, returning new object | d3=d1|d2 ; print (d3) {'a': 2, 'b': 4, 'c': 30, 'a1': 20, 'b1': 40, 'c1': 60} |
dict1|=dict2 | Augmented dictionary union operator | d1|=d2; print (d1) {'a': 2, 'b': 4, 'c': 30, 'a1': 20, 'b1': 40, 'c1': 60} |
Python bao gồm các phương thức từ điển sau:
Sr.No. | Methods with Description |
---|---|
1 | dict.clear() Removes all elements of dictionary dict |
2 | dict.copy() Returns a shallow copy of dictionary dict |
3 | dict.fromkeys() Create a new dictionary with keys from seq and values set to value . |
4 | dict.get(key, default=None) For key key, returns value or default if key not in dictionary |
5 | dict.has_key(key) Returns true if key in dictionary dict , false otherwise |
6 | dict.items() Returns a list of dict 's (key, value) tuple pairs |
7 | dict.keys() Returns list of dictionary dict's keys |
8 | dict.setdefault(key, default=None) Similar to get(), but will set dict[key]=default if key is not already in dict |
9 | dict.update(dict2) Adds dictionary dict2 's key-values pairs to dict |
10 | dict.values() Returns list of dictionary dict 's values |
Dưới đây là các hàm tích hợp sẵn mà chúng ta có thể sử dụng với từ điển (Dictionaries) −
Sr.No. | Function with Description |
---|---|
1 | cmp(dict1, dict2) Compares elements of both dict. |
2 | len(dict) Gives the total length of the dictionary. This would be equal to the number of items in the dictionary. |
3 | str(dict) Produces a printable string representation of a dictionary |
4 | type(variable) Returns the type of the passed variable. If passed variable is dictionary, then it would return a dictionary type. |