Sắp xếp danh sách từ điển python theo ngày giảm dần

Trong bài viết này, chúng ta 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 hàm sorted[]  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 Sorted[] trong python
  • Sắp xếp từ điển theo giá trị bằng hàm sorted[] và lambda trong python
  • Sắp xếp từ điển theo giá trị theo thứ tự giảm dần bằng hàm lambda trong python
  • Sắp xếp từ điển theo giá trị bằng sorted[] & 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

Giả sử chúng ta có một cuốn từ điển,

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

Bây giờ chúng tôi muốn sắp xếp từ điển này dựa trên các giá trị. Phiên bản được sắp xếp phải như thế nào,

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

Để làm điều này, chúng ta sẽ sử dụng hàm sorted[]. Trước tiên chúng ta hãy có một chút tổng quan về hàm sorted[],

Tổng quan về hàm Sorted[] trong python

Python cung cấp chức năng sắp xếp các mục theo trình tự có thể lặp lại. e

sorted[iterable, key=key, reverse=reverse]
  • Nó chấp nhận một trình tự có thể lặp lại làm đối số đầu tiên và trả về một danh sách các mục đã được sắp xếp trong trình tự đó
  • 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ẽ sử dụng đối số đó để so sánh các mục trong chuỗi khi sắp xếp
  • Giá trị mặc định của đối số ngược lại là True; . Để sắp xếp chúng theo thứ tự giảm dần, hãy cung cấp đối số ngược lại là Sai

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

Sắp xếp từ điển theo giá trị bằng hàm sorted[] và lambda trong python

Nếu chúng ta chuyển từ điển của mình cho hàm sorted[] mà không có bất kỳ đối số nào khác. Sau đó, hàm sorted[] sẽ sắp xếp các cặp khóa-giá trị trong  từ điển bằng cách so sánh chúng bằng < toán tử i. e. theo mặc định các mục trong từ điển sẽ được sắp xếp theo khóa. Nhưng thay vào đó, chúng tôi muốn sắp xếp các mục theo giá trị. Đối với điều này, chúng ta cần chuyển hàm khóa làm đối số cho hàm được sắp xếp i. e

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]

đầu ra

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

Nó trả về 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 khóa-giá trị 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 chuyển làm đối số khóa. Trong trường hợp của chúng tôi, chúng tôi đã chuyển một hàm lambda chấp nhận một cặp khóa-giá trị làm đối số và trả về trường giá trị từ cặp đó. Giờ đây, khi sắp xếp các mục trong  từ điển, hàm sorted[] đã chuyển từng cặp khóa-giá trị cho hàm lambda đã cho này và sử dụng giá trị được trả về để so sánh các mục. 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 hàm lambda trong python

Ngoài hàm lambda như trong ví dụ trước, còn truyền đối số ngược lại là True cho hàm sorted[]. 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ôi. e

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]

đầu ra

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

Sắp xếp từ điển theo giá trị bằng sorted[] & itemgetter trong python

Mô-đun toán tử của Python cung cấp một itemgetter, đối tượng của nó sẽ tìm nạp mục đã cho từ 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 làm đối số khóa trong hàm sorted[], để tìm nạp trường giá trị từ mỗi mục khóa-giá trị của từ điển trong khi sắp xếp i. e

import operator

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

# Sort Dictionary by value using itemgetter
sorted_dict = dict[ sorted[word_dict.items[],
                           key=operator.itemgetter[1]]]

print['Sorted Dictionary: ']
print[sorted_dict]

đầu ra

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

Ở đây, itemgetter[1] đã trả về trường giá trị từ cặp khóa-giá trị. 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 làm đối số chính như trong ví dụ trước, hãy chuyển đối số ngược lại thành True cho hàm sorted[] . 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ôi. e

Làm cách nào để sắp xếp từ điển theo ngày trong Python?

Hãy xem một vài phương pháp để giải quyết nhiệm vụ. .
Phương pháp số 1. Sử dụng cách tiếp cận ngây thơ
Phương pháp #2. Sử dụng ngày giờ. strptime và lambda
Phương pháp #3. Sử dụng toán tử. vật phẩm

Python sắp xếp ngày tháng theo thứ tự giảm dần như thế nào?

Theo mặc định, phương thức sort[] sử dụng toán tử less−than [

Chủ Đề