Khi bạn đang làm việc với một từ điển trong Python, đôi khi bạn sẽ cần sắp xếp nội dung của nó—theo khóa hoặc theo giá trị. Vì từ điển Python là ánh xạ khóa-giá trị, bạn sẽ tạo một từ điển mới có các khóa hoặc giá trị được sắp xếp khi cần
Trong hướng dẫn này, chúng ta sẽ bắt đầu bằng cách xem lại những điều cơ bản về từ điển Python. Sau đó, chúng ta sẽ học cách tạo một từ điển mới trong đó nội dung được sắp xếp theo khóa hoặc theo giá trị, nếu cần
Khái niệm cơ bản về từ điển Python, được xem lại
Từ điển Python là gì?
Từ điển là một cấu trúc dữ liệu tích hợp trong Python. Nó lưu trữ các mục dưới dạng cặp khóa-giá trị. Bạn có thể sử dụng các phím để tra cứu các giá trị tương ứng. Vì các khóa xác định duy nhất các giá trị nên sẽ không có sự lặp lại của các khóa
py_dict = {"Python":"cool!","Learn":True}
py_dict["Python"]
# Output: cool!
py_dict["Learn"]
# Output: True
Về mặt chức năng, một từ điển tương tự như một bản đồ băm. Do đó, nó không nhất thiết phải là cấu trúc dữ liệu có thứ tự. Bạn có thể truy cập nội dung của từ điển theo bất kỳ thứ tự tùy ý nào, miễn là bạn biết các phím
Thứ tự các mục trong từ điển
Trong các phiên bản trước của Python, bạn phải sử dụng OrderedDict để duy trì thứ tự của các khóa. Tuy nhiên, từ Python 3. 7, bạn có thể truy cập các mục theo cùng thứ tự mà bạn thêm chúng vào từ điển.
Bây giờ bạn đã học những kiến thức cơ bản về từ điển Python, hãy tìm hiểu cách tạo các bản sao được sắp xếp của từ điển
⚙️ Lưu ý. Bạn cần có Python 3. 7 trở lên để mã trong hướng dẫn này hoạt động như mong đợi. Bạn có thể tải xuống phiên bản Python mới nhất hoặc chạy các ví dụ trong Geekflare Online Python Editor
Nhìn vào hình ảnh sau đây của thực đơn tráng miệng tại một quán cà phê. Có hai cột tương ứng với các mục trên menu và giá tương ứng của chúng
Bạn có thể biểu diễn điều này dưới dạng từ điển Python bằng cách thu thập tên của các mục dưới dạng khóa và giá của chúng dưới dạng giá trị
Hãy tiếp tục và tạo từ điển
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
2, như hình bên dướidesserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
Tiếp theo, hãy tạo một từ điển
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
3, trong đó các món tráng miệng được sắp xếp theo thứ tự bảng chữ cái. Trong từ điển desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
2 gốc, tên của các món tráng miệng là chìa khóa. Vì vậy bạn nên sắp xếp các khóa này theo thứ tự bảng chữ cái để tạo từ điển mớiCách truy cập các khóa của từ điển Python
Để làm điều này, trước tiên chúng tôi sẽ lấy các khóa của từ điển và sau đó sắp xếp chúng theo thứ tự bảng chữ cái
Trong Python, bạn có thể sử dụng phương thức từ điển tích hợp sẵn
5 để lấy danh sách tất cả các khóa trong từ điểndesserts = { "Ice cream":10, "Brownies":12, "Cheesecake":3, "Swiss roll":5, "Cookies":4, "Cup cake":2 }
Hãy gọi phương thức
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
5 trên từ điển desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
7 để lấy các khóa, như hình bên dưới________số 8Gọi hàm
8 tích hợp sẵn của Python với một danh sách làm đối số trả về một danh sách được sắp xếp mớidesserts = { "Ice cream":10, "Brownies":12, "Cheesecake":3, "Swiss roll":5, "Cookies":4, "Cup cake":2 }
Tiếp theo, hãy gọi hàm
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
8 với danh sách keys = desserts.keys[]
print[keys]
#Output
['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies',
'Cup cake']
0 làm đối số và lưu danh sách đã sắp xếp vào biến keys = desserts.keys[]
print[keys]
#Output
['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies',
'Cup cake']
1desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
3Bây giờ chúng ta có các khóa được sắp xếp theo thứ tự bảng chữ cái, chúng ta có thể tra cứu các giá trị tương ứng với các khóa trong
keys = desserts.keys[]
print[keys]
#Output
['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies',
'Cup cake']
1 từ từ điển desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
2, như hình bên dướidesserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
6Hãy mở rộng khối mã trên
- Khởi tạo
3 thành một từ điển Python trốngdesserts = { "Ice cream":10, "Brownies":12, "Cheesecake":3, "Swiss roll":5, "Cookies":4, "Cup cake":2 }
- Lặp qua danh sách khóa
1keys = desserts.keys[] print[keys] #Output ['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 'Cup cake']
- Đối với mỗi khóa trong
1, hãy thêm một mục vàokeys = desserts.keys[] print[keys] #Output ['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 'Cup cake']
3 bằng cách tra cứu giá trị tương ứng trong từ điểndesserts = { "Ice cream":10, "Brownies":12, "Cheesecake":3, "Swiss roll":5, "Cookies":4, "Cup cake":2 }
2desserts = { "Ice cream":10, "Brownies":12, "Cheesecake":3, "Swiss roll":5, "Cookies":4, "Cup cake":2 }
Sử dụng vòng lặp
keys = desserts.keys[]
print[keys]
#Output
['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies',
'Cup cake']
9 như thế này được coi là dài dòng. Trong Python, có một giải pháp thay thế ngắn gọn hơn bằng cách sử dụng khả năng hiểu từ điểnHiểu từ điển trong Python
Python hỗ trợ việc sử dụng khả năng hiểu từ điển, tương tự như khả năng hiểu danh sách. Khả năng hiểu từ điển cho phép bạn tạo một từ điển Python mới chỉ bằng một dòng mã
▶️ Đây là cấu trúc chung để sử dụng khả năng hiểu từ điển trong Python
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
3Hãy sử dụng cấu trúc thứ hai trong ô trên.
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
30 để tạo từ điển desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
3trong ví dụ này
- lặp đi lặp lại. danh sách
1keys = desserts.keys[] print[keys] #Output ['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 'Cup cake']
- Chìa khóa. khóa mà chúng tôi truy cập bằng cách lặp qua sort_keys
- giá trị. tra cứu giá trị tương ứng với khóa từ từ điển món tráng miệng,
33desserts = { "Ice cream":10, "Brownies":12, "Cheesecake":3, "Swiss roll":5, "Cookies":4, "Cup cake":2 }
Đặt tất cả lại với nhau, chúng ta có biểu thức để hiểu từ điển, như hình dưới đây
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
8Từ kết quả trên, các món tráng miệng được sắp xếp theo thứ tự bảng chữ cái trong từ điển
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
3Cách sắp xếp từ điển Python theo giá trị
Tiếp theo, chúng ta sẽ tìm hiểu cách sắp xếp từ điển Python theo giá trị của nó
Trong từ điển
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
2, các giá trị tương ứng với giá của món tráng miệng. Bạn có thể muốn sắp xếp từ điển theo giá, theo thứ tự tăng hoặc giảm▶️ Bạn có thể sử dụng phương pháp từ điển tích hợp sẵn
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
36 để lấy tất cả các cặp khóa-giá trị. Mỗi bộ dữ liệu là một cặp khóa-giá trịdesserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
2Mỗi mục là một bộ trong chính nó. Vì vậy, bạn cũng có thể lập chỉ mục cho từng cặp khóa-giá trị để truy cập các khóa và giá trị riêng lẻ
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
3Vì chúng ta muốn sắp xếp theo giá trị, chúng ta sẽ sử dụng phương pháp trên để lấy giá trị ở chỉ số 1 trong cặp khóa-giá trị
Cách sắp xếp các giá trị của từ điển Python theo thứ tự tăng dần
Lần này, chúng ta sẽ sử dụng hàm
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
8 cùng với tham số desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
38 tùy chọn. desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
38 có thể là bất kỳ hàm Python nào, hàm tích hợp sẵn, hàm do người dùng định nghĩa hoặc thậm chí là hàm lambdaGhi chú.
60 là cú pháp để xác định các hàm lambda trong Pythondesserts = { "Ice cream":10, "Brownies":12, "Cheesecake":3, "Swiss roll":5, "Cookies":4, "Cup cake":2 }
Trong ví dụ sắp xếp món tráng miệng theo giá này, chúng tôi có quyền truy cập vào các mục từ điển [cặp khóa-giá trị]. Chúng tôi sẽ đặt
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
61 khi chúng tôi muốn sắp xếp theo giá trị [giá]Vì hàm
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
8 trả về một danh sách theo mặc định, bạn nên chuyển nó thành một desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
63 một cách rõ ràng, như được hiển thị bên dướidesserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
1Bạn cũng có thể viết lại bằng cách sử dụng khả năng hiểu từ điển, như đã thảo luận trước đó
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
0Trong
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
3, desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
65 có giá $2 là mặt hàng đầu tiên và desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
66 có giá $12 là mặt hàng cuối cùngCách sắp xếp các giá trị của từ điển Python theo thứ tự giảm dần
Nếu bạn muốn sắp xếp giá theo thứ tự giảm dần, bạn có thể đặt tham số đảo ngược tùy chọn thành
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
67, như được giải thích bên dướidesserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
1Bây giờ,
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
3 đã được sắp xếp theo thứ tự giá giảm dần, bắt đầu với món tráng miệng đắt nhất desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
66 có giá 12 đô la