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