Làm cách nào để bạn sắp xếp khóa từ điển theo giá trị trong python?

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ưới

desserts = {
    "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ới

Cá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

desserts = {
    "Ice cream":10,
    "Brownies":12,
    "Cheesecake":3,
    "Swiss roll":5,
    "Cookies":4,
    "Cup cake":2
}
5 để lấy danh sách tất cả các khóa trong từ điển

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ố 8

Gọi hàm

desserts = {
    "Ice cream":10,
    "Brownies":12,
    "Cheesecake":3,
    "Swiss roll":5,
    "Cookies":4,
    "Cup cake":2
}
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ới

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']
1

desserts = {
    "Ice cream":10,
    "Brownies":12,
    "Cheesecake":3,
    "Swiss roll":5,
    "Cookies":4,
    "Cup cake":2
}
3

Bâ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ưới

desserts = {
    "Ice cream":10,
    "Brownies":12,
    "Cheesecake":3,
    "Swiss roll":5,
    "Cookies":4,
    "Cup cake":2
}
6

Hãy mở rộng khối mã trên

  • Khởi tạo
    desserts = {
        "Ice cream":10,
        "Brownies":12,
        "Cheesecake":3,
        "Swiss roll":5,
        "Cookies":4,
        "Cup cake":2
    }
    3 thành một từ điển Python trống
  • Lặp qua danh sách khóa
    keys = desserts.keys[]
    print[keys]
    
    #Output
    ['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 
    'Cup cake']
    1
  • Đối với mỗi khóa trong
    keys = desserts.keys[]
    print[keys]
    
    #Output
    ['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 
    'Cup cake']
    1, hãy thêm một mục vào
    desserts = {
        "Ice cream":10,
        "Brownies":12,
        "Cheesecake":3,
        "Swiss roll":5,
        "Cookies":4,
        "Cup cake":2
    }
    3 bằng cách tra cứu giá trị tương ứng trong từ điển
    desserts = {
        "Ice cream":10,
        "Brownies":12,
        "Cheesecake":3,
        "Swiss roll":5,
        "Cookies":4,
        "Cup cake":2
    }
    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ển

Hiể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
}
3

Hã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
}
3

trong ví dụ này

  • lặp đi lặp lại. danh sách
    keys = desserts.keys[]
    print[keys]
    
    #Output
    ['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 
    'Cup cake']
    1
  • 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,
    desserts = {
        "Ice cream":10,
        "Brownies":12,
        "Cheesecake":3,
        "Swiss roll":5,
        "Cookies":4,
        "Cup cake":2
    }
    33

Đặ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
}
8

Từ 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
}
3

Cá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
}
2

Mỗ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
}
3

Vì 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 lambda

Ghi chú.

desserts = {
    "Ice cream":10,
    "Brownies":12,
    "Cheesecake":3,
    "Swiss roll":5,
    "Cookies":4,
    "Cup cake":2
}
60 là cú pháp để xác định các hàm lambda trong Python

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ưới

desserts = {
    "Ice cream":10,
    "Brownies":12,
    "Cheesecake":3,
    "Swiss roll":5,
    "Cookies":4,
    "Cup cake":2
}
1

Bạ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
}
0

Trong

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ùng

Cá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ưới

desserts = {
    "Ice cream":10,
    "Brownies":12,
    "Cheesecake":3,
    "Swiss roll":5,
    "Cookies":4,
    "Cup cake":2
}
1

Bâ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

Bạn có thể sắp xếp từ điển theo khóa trong Python không?

Hàm sorted[] của Python có thể được sử dụng để sắp xếp từ điển theo khóa , cho phép phương thức sắp xếp tùy chỉnh. sorted[] nhận ba đối số. đối tượng, khóa và đảo ngược. Từ điển là cấu trúc dữ liệu không có thứ tự. Họ sử dụng cấu trúc ánh xạ để lưu trữ dữ liệu.

Bạn có thể sắp xếp các giá trị trong từ điển không?

Không thể sắp xếp từ điển , chỉ nhận được biểu diễn của từ điển được sắp xếp. Từ điển vốn đã không có thứ tự, nhưng các loại khác, chẳng hạn như danh sách và bộ dữ liệu, thì không. Vì vậy, bạn cần một kiểu dữ liệu được sắp xếp để biểu thị các giá trị được sắp xếp, đây sẽ là một danh sách—có thể là một danh sách các bộ.

Chủ Đề