Hướng dẫn python sort dictionary by value descending - từ điển sắp xếp python theo giá trị giảm dần

Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21:51:49 (UTC/GMT +8 giờ)

Từ điển Python: Bài tập-1 với giải pháp

Viết một chương trình Python để sắp xếp (tăng dần và giảm dần) một từ điển theo giá trị.

Giải pháp mẫu-1:

Mã Python:

import operator
d = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
print('Original dictionary : ',d)
sorted_d = sorted(d.items(), key=operator.itemgetter(1))
print('Dictionary in ascending order by value : ',sorted_d)
sorted_d = dict( sorted(d.items(), key=operator.itemgetter(1),reverse=True))
print('Dictionary in descending order by value : ',sorted_d)

Đầu ra mẫu:

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}

Trực quan hóa thực thi mã Python:

Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực hiện chương trình đã nói:

Giải pháp mẫu-2:

Lưu ý: Giá trị từ điển phải cùng loại.

  • Sử dụng Dict.Items () để có được danh sách các cặp Tuple từ D và sắp xếp nó bằng hàm Lambda và Sắp xếp ().
  • Sử dụng Dict () để chuyển đổi danh sách được sắp xếp trở lại từ điển.
  • Sử dụng tham số ngược trong Sắp xếp () để sắp xếp từ điển theo thứ tự ngược lại, dựa trên đối số thứ hai.

Mã Python:

def sort_dict_by_value(d, reverse = False):
  return dict(sorted(d.items(), key = lambda x: x[1], reverse = reverse))
print("Original dictionary elements:")
colors = {'Red': 1, 'Green': 3, 'Black': 5, 'White': 2, 'Pink': 4}
print(colors)
print("\nSort (ascending) the said dictionary elements by value:")
print(sort_dict_by_value(colors))
print("\nSort (descending) the said dictionary elements by value:")
print(sort_dict_by_value(colors, True))

Đầu ra mẫu:

Original dictionary elements:
{'Red': 1, 'Green': 3, 'Black': 5, 'White': 2, 'Pink': 4}

Sort (ascending) the said dictionary elements by value:
{'Red': 1, 'White': 2, 'Green': 3, 'Pink': 4, 'Black': 5}

Sort (descending) the said dictionary elements by value:
{'Black': 5, 'Pink': 4, 'Green': 3, 'White': 2, 'Red': 1}

Flowchart:

Hướng dẫn python sort dictionary by value descending - từ điển sắp xếp python theo giá trị giảm dần

Trực quan hóa thực thi mã Python:

Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực hiện chương trình đã nói:

Giải pháp mẫu-2:

Lưu ý: Giá trị từ điển phải cùng loại.

Sử dụng Dict.Items () để có được danh sách các cặp Tuple từ D và sắp xếp nó bằng hàm Lambda và Sắp xếp (). Python Dictionary Exercise Home.
Next: Write a Python program to add a key to a dictionary.

Từ điển không có bất kỳ thứ tự vốn có. Hoặc, đúng hơn, thứ tự vốn có của họ là "tùy ý nhưng không ngẫu nhiên", vì vậy nó không làm bạn tốt.

Trong các điều khoản khác nhau,

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
7 của bạn và
Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
8 của bạn sẽ là từ điển tương đương chính xác.

Những gì bạn có thể làm ở đây là sử dụng

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
9:

from collections import OrderedDict
d = { '123': { 'key1': 3, 'key2': 11, 'key3': 3 },
      '124': { 'key1': 6, 'key2': 56, 'key3': 6 },
      '125': { 'key1': 7, 'key2': 44, 'key3': 9 },
    }
d_ascending = OrderedDict(sorted(d.items(), key=lambda kv: kv[1]['key3']))
d_descending = OrderedDict(sorted(d.items(), 
                                  key=lambda kv: kv[1]['key3'], reverse=True))

Bản gốc

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
7 có một số thứ tự tùy ý.
def sort_dict_by_value(d, reverse = False):
  return dict(sorted(d.items(), key = lambda x: x[1], reverse = reverse))
print("Original dictionary elements:")
colors = {'Red': 1, 'Green': 3, 'Black': 5, 'White': 2, 'Pink': 4}
print(colors)
print("\nSort (ascending) the said dictionary elements by value:")
print(sort_dict_by_value(colors))
print("\nSort (descending) the said dictionary elements by value:")
print(sort_dict_by_value(colors, True))

1 có thứ tự bạn nghĩ rằng bạn có trong
Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
7 ban đầu của bạn, nhưng không. Và
def sort_dict_by_value(d, reverse = False):
  return dict(sorted(d.items(), key = lambda x: x[1], reverse = reverse))
print("Original dictionary elements:")
colors = {'Red': 1, 'Green': 3, 'Black': 5, 'White': 2, 'Pink': 4}
print(colors)
print("\nSort (ascending) the said dictionary elements by value:")
print(sort_dict_by_value(colors))
print("\nSort (descending) the said dictionary elements by value:")
print(sort_dict_by_value(colors, True))

3 có thứ tự bạn muốn cho
Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
8 của mình.


Nếu bạn không thực sự cần sử dụng

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
8 làm từ điển, nhưng bạn chỉ muốn có thể lặp lại các yếu tố của
Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
7 theo một thứ tự cụ thể, bạn có thể đơn giản hóa điều này:

for key, value in sorted(d.items(), key=lambda kv: kv[1]['key3'], reverse=True):
    do_something_with(key, value)

Nếu bạn muốn duy trì một từ điển theo thứ tự được sắp xếp theo bất kỳ thay đổi nào, thay vì

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
9, bạn muốn một số loại từ điển được sắp xếp. Có một số tùy chọn có sẵn mà bạn có thể tìm thấy trên PYPI, một số được triển khai trên đỉnh cây, các tùy chọn khác trên đỉnh của một
Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
9 tự sắp xếp lại khi cần thiết, v.v.

Trong bài viết này, chúng tôi sẽ thảo luận về các cách khác nhau để sắp xếp từ điển Python theo các giá trị theo cả thứ tự tăng dần và giảm dần bằng cách sử dụng Sắp xếp () & nbsp; chức năng bằng cách sử dụng hàm Lambda hoặc itemGetter () làm đối số chính.


Mục lục

  • Tổng quan về hàm Sắp xếp () trong Python
  • Sắp xếp từ điển theo giá trị bằng cách sử dụng hàm Sắp xếp () & lambda trong Python
  • Sắp xếp từ điển theo giá trị theo thứ tự giảm dần bằng cách sử dụng hàm Lambda trong Python
  • Sắp xếp từ điển theo giá trị bằng cách sử dụng Sắp xếp () & Itemgetter trong Python
  • Sắp xếp từ điển theo giá trị theo thứ tự giảm dần bằng cách sử dụng Itemgetter trong Python

Ngoài đối tượng ItemGetter như một đối số chính như trong ví dụ trước, cũng chuyển đối số ngược lại đúng với Sắp xếp () & NBSP; hàm số. Nó sẽ sắp xếp các mục trong từ điển theo giá trị, nhưng theo thứ tự giảm dần, tức là.

word_dict = {
    'this': 11,
    'at': 9,
    'here': 5,
    'why': 12,
    'is': 2,
}

Vì vậy, đây là hai cách để sắp xếp một từ điển theo giá trị.

{'is': 2, 'here': 5, 'at': 9, 'this': 11, 'why': 12}

Làm thế nào để bạn sắp xếp một từ điển theo giá trị theo thứ tự giảm dần trong Python?

Quảng cáo

Tổng quan về hàm Sắp xếp () trong Python

Python cung cấp một chức năng để sắp xếp các mục theo một chuỗi có thể lặp lại, tức là.

sorted(iterable, key=key, reverse=reverse)
  • Nó chấp nhận một chuỗi có thể lặp lại như là đối số đầu tiên và trả về một danh sách các mục được sắp xếp trong chuỗi đó.
  • Theo mặc định, nó sử dụng toán tử <để so sánh các phần tử trong chuỗi, nhưng nếu một đối số chính (hàm gọi lại) được cung cấp, thì nó sử dụng nó để so sánh các mục trong chuỗi trong khi sắp xếp.
  • Giá trị mặc định của đối số ngược là đúng; Do đó, nó sắp xếp các mục theo thứ tự tăng dần theo mặc định. Để sắp xếp chúng theo thứ tự giảm dần, hãy cung cấp đối số ngược là sai.

Từ điển trong Python cũng là một chuỗi các cặp giá trị khóa. Vì vậy, để sắp xếp một từ điển, chúng ta có thể sử dụng hàm sort (),

Sắp xếp từ điển theo giá trị bằng cách sử dụng hàm Sắp xếp () & lambda trong Python

Nếu chúng ta chuyển từ điển của chúng ta đến hàm Sắp xếp (), mà không có bất kỳ đối số nào khác. Sau đó sắp xếp hàm () sẽ sắp xếp các cặp giá trị khóa trong & nbsp; Từ điển bằng cách so sánh chúng bằng cách sử dụng

word_dict = { 'this': 11, 'at': 9, 'here': 5, 'why': 12, 'is': 2 }

# Sort Dictionary by value in descending order using lambda function
sorted_dict = dict( sorted(word_dict.items(),
                           key=lambda item: item[1],
                           reverse=True))

print('Sorted Dictionary: ')
print(sorted_dict)

Output:

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
0

Nó đã trả lại một từ điển mới, được sắp xếp theo giá trị.

Nhưng nó đã hoạt động như thế nào?

Nó đã sắp xếp các cặp giá trị khóa trong từ điển bằng cách so sánh chúng bằng cách sử dụng bộ so sánh được truyền như một đối số chính. Trong trường hợp của chúng tôi, chúng tôi đã vượt qua A & NBSP; Hàm Lambda, chấp nhận một cặp giá trị khóa làm đối số và trả về trường giá trị từ cặp đó. Bây giờ trong khi sắp xếp các mục trong & nbsp; Từ điển, hàm Sắp xếp () đã chuyển từng cặp giá trị khóa cho hàm Lambda đã cho này và sử dụng giá trị trả về để so sánh các mục. & NBSP; Do đó, từ điển của chúng tôi được sắp xếp theo giá trị.

Sắp xếp từ điển theo giá trị theo thứ tự giảm dần bằng cách sử dụng hàm Lambda trong Python

Ngoài hàm lambda như trong ví dụ trước, cũng chuyển đối số ngược lại đúng với hàm sort (). Nó sẽ sắp xếp các mục trong từ điển theo giá trị, nhưng theo thứ tự giảm dần, tức là.

word_dict = { 'this': 11, 'at': 9, 'here': 5, 'why': 12, 'is': 2 }

# Sort Dictionary by value in descending order using lambda function
sorted_dict = dict( sorted(word_dict.items(),
                           key=lambda item: item[1],
                           reverse=True))

print('Sorted Dictionary: ')
print(sorted_dict)

Output:

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
2

Sắp xếp từ điển theo giá trị bằng cách sử dụng Sắp xếp () & Itemgetter trong Python

Mô -đun toán tử Python, cung cấp một bộ đồ vật, có đối tượng lấy vật phẩm đã cho từ các toán hạng của nó. Nó có nghĩa là,

  • itemgetter (2) (r) Trả về r [2]
  • ItemGetter (1) (r) Trả về R [1].

Chúng ta có thể chuyển đối tượng ItemGetter dưới dạng đối số chính trong hàm Sắp xếp (), để tìm nạp trường giá trị từ mỗi mục giá trị khóa của từ điển trong khi sắp xếp tức là.

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
3

Output:

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
0

Ở đây, ItemGetter (1) đã trả về trường giá trị từ cặp giá trị khóa. Do đó, từ điển đã được sắp xếp theo giá trị.

Sắp xếp từ điển theo giá trị theo thứ tự giảm dần bằng cách sử dụng Itemgetter trong Python

Ngoài đối tượng ItemGetter như một đối số chính như trong ví dụ trước, cũng chuyển đối số ngược lại đúng với Sắp xếp () & NBSP; hàm số. Nó sẽ sắp xếp các mục trong từ điển theo giá trị, nhưng theo thứ tự giảm dần, tức là.

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
5

Output:

Original dictionary :  {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
Dictionary in ascending order by value :  [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
Dictionary in descending order by value :  {3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
2

Conclusion:

Vì vậy, đây là hai cách để sắp xếp một từ điển theo giá trị.

Làm thế nào để bạn sắp xếp một từ điển theo giá trị theo thứ tự giảm dần trong Python?

Đảo ngược với giá trị của True sẽ sắp xếp từ điển được sắp xếp theo thứ tự giảm dần. Bạn có thể thấy đầu ra bị đảo ngược vì chúng tôi đã chuyển ngược lại = true với phương thức Sắp xếp (). Nếu bạn không đặt ngược lại hoặc bạn đặt giá trị của nó thành sai, từ điển sẽ được sắp xếp theo thứ tự tăng dần. Đó là mặc định.. You can see the output is reversed because we passed reverse=True to the sorted() method. If you don't set reverse at all or you set its value to false, the dictionary will be arranged in ascending order. That's the default.

Làm thế nào để bạn sắp xếp các giá trị trong từ điển theo thứ tự giảm dần?

Sử dụng dict.Các mục () để có được một danh sách các cặp Tuple từ D và sắp xếp nó bằng hàm Lambda và Sắp xếp ().Sử dụng Dict () để chuyển đổi danh sách được sắp xếp trở lại từ điển.Sử dụng tham số ngược trong Sắp xếp () để sắp xếp từ điển theo thứ tự ngược lại, dựa trên đối số thứ hai.Use the reverse parameter in sorted() to sort the dictionary in reverse order, based on the second argument.

Làm thế nào để bạn sắp xếp một từ điển theo khóa trong đơn đặt hàng giảm dần Python?

Giải thích về mã: Vì vậy, trong Từ điển Python, Phương thức Item () được sử dụng để trả về danh sách với tất cả các khóa từ điển với các giá trị.Vì vậy, sau đó, chúng tôi sẽ nhận được từ điển được sắp xếp theo thứ tự tăng dần.Sử dụng l.sort (đảo ngược = true) Bạn sẽ nhận được từ điển được sắp xếp theo thứ tự giảm dần.use l. sort(reverse=True) You will get the sorted dictionary in descending order.

Bạn có thể sắp xếp một python từ điển theo giá trị?

Để sắp xếp từ điển theo giá trị trong Python, bạn có thể sử dụng hàm Sắp xếp ().Hàm Sắp xếp () 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.Sắp xếp () lấy ba đối số: đối tượng, khóa và đảo ngược.