Bạn có thể có cùng một khóa hai lần trong từ điển Python không?

Cấu trúc dữ liệu là thành phần chính của chương trình. Chúng giữ hoặc chứa dữ liệu theo một cách cụ thể để làm cho các chương trình hoạt động hiệu quả hơn. Cách truy cập dữ liệu được lưu trữ trong cấu trúc dữ liệu cũng rất quan trọng

Từ điển là một trong những cấu trúc dữ liệu cốt lõi trong Python. Từ điển chứa các cặp khóa-giá trị. Một giá trị có thể dễ dàng được truy cập thông qua khóa của nó. Đây là một ví dụ đơn giản

members = {1001: "John", 1002: "Jane", 1003: "Emily"}print(members[1001])
John

Trong bài viết này, chúng ta sẽ điểm qua 4 tính năng cần biết của từ điển Python. Chúng rất cần thiết để sử dụng từ điển một cách hiệu quả và phù hợp

1. Từ điển không có thứ tự

Một từ điển chứa các cặp khóa-giá trị nhưng không có thứ tự cho các cặp. Do đó, một định nghĩa chính xác hơn là từ điển là một tập hợp các cặp khóa-giá trị không theo thứ tự

Do đó, chúng tôi không thể thực hiện các thao tác điển hình liên quan đến thứ tự các mục. Chẳng hạn, không thể lấy mục đầu tiên hoặc mục cuối cùng trong từ điển

Một hoạt động phổ biến khác được thực hiện với các chỉ số là cắt. Nó có thể được thực hiện trên danh sách Python

mylist = ["John", "Jane", "Emily"]print(mylist[0])
John
print(mylist[1:])
['Jane', 'Emily']

Không giống như danh sách, từ điển được lập chỉ mục theo khóa. Như vậy, không thể thực hiện các thao tác này trên từ điển do không có lệnh. Chúng ta có thể truy cập một giá trị bằng cách chuyển khóa của nó trong dấu ngoặc vuông hoặc phương thức get

members = {1001: "John", 1002: "Jane", 1003: "Emily"}members[1001]
'John'
members.get(1001)
'John'

Điều quan trọng cần lưu ý là thiếu thứ tự không phải là thiếu từ điển Python. Trên thực tế, nó có thể được coi là một thế mạnh. Chúng cho phép nhanh chóng truy cập và truy xuất thông tin được liên kết với một khóa cụ thể

2. Các phím là duy nhất

Khóa từ điển phải là duy nhất. Nó có ý nghĩa bởi vì chúng tôi sử dụng chúng để truy cập các giá trị. Có các khóa trùng lặp đánh bại mục đích sử dụng từ điển để lưu trữ thông tin

Mặc dù từ điển không cho phép tạo các khóa trùng lặp nhưng nó không cảnh báo bạn nếu bạn sử dụng cùng một khóa nhiều lần. Vì vậy, bạn cần hết sức cẩn thận để không gây ra bất kỳ hành vi không mong muốn nào.

Hãy đi qua một vài ví dụ để làm cho nó rõ ràng hơn

members = {1001: "John", 1002: "Jane", 1003: "Emily", 1001: "Max"}print(members)
{1001: 'Max', 1002: 'Jane', 1003: 'Emily'}

Chúng tôi sử dụng cùng một khóa (1001) hai lần nhưng không gặp bất kỳ lỗi nào. Thay vào đó, Python ghi đè giá trị trước đó bằng giá trị mới

Hành vi tương tự được quan sát thấy khi cập nhật từ điển. Chúng tôi có thể thêm một mục mới vào từ điển như dưới đây

members[1004] = "Ashley"print(members)
{1001: 'Max', 1002: 'Jane', 1003: 'Emily', 1004: 'Ashley'}

Khóa 1004 không có trong từ điển thành viên nên nó được thêm vào với giá trị đã cho. Nếu chúng ta sử dụng cùng một phương thức và chuyển một khóa đã có trong từ điển, giá trị của nó sẽ được cập nhật

members[1001] = "AAAAA"print(members)
{1001: 'AAAAA', 1002: 'Jane', 1003: 'Emily', 1004: 'Ashley'}

Như vậy, nó giống như cập nhật giá trị của khóa hơn là tạo một cặp khóa-giá trị mới

3. Các khóa phải là bất biến

Khóa từ điển phải thuộc loại bất biến. Chuỗi và số là hai kiểu dữ liệu được sử dụng phổ biến nhất làm khóa từ điển. Chúng ta cũng có thể sử dụng các bộ dữ liệu làm khóa nhưng chúng chỉ được chứa các chuỗi, số nguyên hoặc các bộ dữ liệu khác

Chúng tôi đã tạo một từ điển với các khóa số nguyên. Hãy tạo thêm một vài thứ nữa bằng các phím chuỗi và tuple

# string keys
dict_a = {"Param1": "value1", "Param2": "value2"}
print(dict_a)
{'Param1': 'value1', 'Param2': 'value2'}

# tuple keys
dict_b = {(1, 10): "value1", (1,20): "value2"}
print(dict_b)
{(1, 10): 'value1', (1, 20): 'value2'}

Nếu chúng ta cố gắng tạo một khóa của một biến có thể thay đổi (i. e. unhashable), một lỗi loại được đưa ra

dict_c = {[1, 2] : "value1", [1,4]: "value2"}
TypeError: unhashable type: 'list'
dict_d = {(1, [1,2]): "value1"}
TypeError: unhashable type: 'list'

4. hiểu từ điển

Có một số phương pháp để tạo từ điển trong Python. Một phương pháp là viết các cặp khóa-giá trị trong dấu ngoặc nhọn như chúng ta đã làm cho đến thời điểm này

Một tùy chọn khác là hàm tạo

mylist = ["John", "Jane", "Emily"]print(mylist[0])
John
print(mylist[1:])
['Jane', 'Emily']
1 tạo từ điển từ một chuỗi các cặp khóa-giá trị

sequence = [[1, "John"], [2, "Jane"]]dict(sequence)
{1: 'John', 2: 'Jane'}

Hiểu từ điển tương tự như khái niệm hiểu danh sách. Đó là cách thực tế hơn để tạo từ điển có chứa một bộ giá trị có cấu trúc

Hãy xem xét chúng tôi có các văn bản sau đây

mylist = ["John", "Jane", "Emily"]print(mylist[0])
John
print(mylist[1:])
['Jane', 'Emily']
0

Chúng tôi muốn có một cái nhìn tổng quan về độ dài của các từ trong văn bản này. Chúng ta có thể tạo một từ điển chứa cả từ và độ dài của chúng. Việc hiểu từ điển hoàn thành nhiệm vụ này đơn giản như sau

mylist = ["John", "Jane", "Emily"]print(mylist[0])
John
print(mylist[1:])
['Jane', 'Emily']
0

Chúng tôi chia văn bản ở các ký tự khoảng trắng và sử dụng từng từ làm khóa. Các giá trị được tính bằng cách gọi hàm

mylist = ["John", "Jane", "Emily"]print(mylist[0])
John
print(mylist[1:])
['Jane', 'Emily']
2 tích hợp trên các từ

(hình ảnh của tác giả)

Điều đáng nhấn mạnh là chúng tôi không nhận được bất kỳ thông tin nào về số lần xuất hiện của các từ trong văn bản. Từ điển bao gồm các từ độc đáo

Phần kết luận

Từ điển là một cấu trúc dữ liệu rất quan trọng trong Python. Đôi khi chúng được gọi là “mảng kết hợp” trong các ngôn ngữ lập trình khác. Chúng cho phép truy xuất nhanh thông tin về một mục nhập. Hãy làm một phép loại suy để chứng minh việc sử dụng từ điển

Xem xét một sổ địa chỉ mà không có bất kỳ cơ cấu tổ chức nào. Khi một mục mới được thêm vào, nó được viết ở cuối. Để tra cứu một địa chỉ trong cuốn sách này, bạn sẽ bắt đầu đọc từ đầu. Nếu bạn không may mắn, bạn có thể phải đọc đến cuối để tìm thấy những gì bạn đang tìm kiếm

Nếu sổ địa chỉ này có một phần riêng cho từng chữ cái và các địa chỉ được lưu trữ theo các chữ cái đầu tiên của chúng thì việc tìm địa chỉ sẽ dễ dàng hơn nhiều. Từ điển cung cấp một tra cứu dễ dàng như vậy. Chúng tôi cung cấp cho họ khóa và họ trả lại giá trị được liên kết

Bạn có thể có cùng một khóa hai lần trong từ điển không?

Không, mỗi khóa trong từ điển phải là duy nhất. Bạn không thể có hai khóa có cùng giá trị .

Chúng ta có thể có nhiều giá trị cho cùng một khóa trong từ điển python không?

Ý tưởng chung. Trong Python, nếu chúng ta muốn một từ điển có nhiều giá trị cho một khóa, chúng ta cần lưu trữ các giá trị này trong vùng chứa riêng của chúng trong từ điển . Để làm như vậy, chúng tôi cần sử dụng một vùng chứa làm giá trị và thêm nhiều giá trị của chúng tôi vào vùng chứa đó. Các thùng chứa phổ biến là danh sách, bộ dữ liệu và bộ.

Điều gì sẽ xảy ra nếu một từ điển có các khóa Python trùng lặp?

Chữ từ điển được xây dựng theo thứ tự được cung cấp trong nguồn. Điều này có nghĩa là nếu một khóa bị trùng lặp cặp khóa-giá trị thứ hai sẽ ghi đè lên cặp khóa-giá trị đầu tiên vì từ điển chỉ có thể có một giá trị cho mỗi khóa.

Chúng ta có thể lặp lại các giá trị của Key trong từ điển không?

Câu trả lời ngắn gọn, không