Hướng dẫn python sort list of dictionary by multiple values - python sắp xếp danh sách từ điển theo nhiều giá trị
Câu trả lời này hoạt động cho bất kỳ loại cột nào trong từ điển - cột phủ định không cần phải là một số. Show
Bạn có thể gọi nó như thế này:
Hãy thử nó với một trong hai cột phủ định. Bạn sẽ thấy thứ tự sắp xếp đảo ngược. Tiếp theo: Thay đổi nó để nó không sử dụng thêm lớp .... 2016-01-17 Lấy cảm hứng từ câu trả lời này Cách tốt nhất để có được mục đầu tiên từ một điều kiện phù hợp với điều kiện là gì ?, Tôi đã rút ngắn mã:
Trong trường hợp bạn thích mã của bạn terse. Muộn hơn 2016-01-17 Điều này hoạt động với Python3 (loại bỏ đối số 3 thành 4):
Lấy cảm hứng từ câu trả lời này làm thế nào tôi nên sắp xếp tùy chỉnh trong Python 3? Trong Python, việc sắp xếp một danh sách các từ điển với phương thức 5 hoặc hàm 6 làm tăng lỗi 7 theo mặc định.Bằng cách chỉ định tham số 8 của 5 hoặc 6, bạn có thể sắp xếp một danh sách các từ điển theo giá trị của khóa cụ thể.Bài viết này mô tả các nội dung sau đây.
Các mã mẫu sau đây sử dụng danh sách các từ điển với các khóa chung. Mô -đun Pprint được sử dụng để làm cho đầu ra dễ đọc hơn.
Sắp xếp danh sách các từ điển làm tăng lỗi theo mặc địnhSắp xếp danh sách các từ điển ( 6) bằng phương thức 5 hoặc hàm 6 làm tăng lỗi 7 theo mặc định.Điều này là do từ điển không hỗ trợ so sánh với 0, 1, v.v.
Chỉ định biểu thức Lambda cho tham số from operator import itemgetter as i def multikeysort(items, columns): comparers = [ ((i(col[1:].strip()), -1) if col.startswith('-') else (i(col.strip()), 1)) for col in columns ] def comparer(left, right): comparer_iter = ( cmp(fn(left), fn(right)) * mult for fn, mult in comparers ) return next((result for result in comparer_iter if result), 0) return sorted(items, cmp=comparer) 8Chỉ định 2 cho tham số 8Sắp xếp theo nhiều phím
Các mã mẫu sau đây sử dụng danh sách các từ điển với các khóa chung. Mô -đun Pprint được sử dụng để làm cho đầu ra dễ đọc hơn. Bản in đẹp với pprint trong Python
Điều này là do từ điển không hỗ trợ so sánh với 0, 1, v.v.
Để sắp xếp một danh sách các từ điển theo giá trị của khóa cụ thể, chỉ định tham số 8 của phương thức 5 hoặc hàm 6.Bằng cách chỉ định một hàm được áp dụng cho từng phần tử của danh sách, nó được sắp xếp theo kết quả của hàm đó. Xem bài viết sau đây để biết thêm thông tin.
Trong ví dụ này, bạn có thể chỉ định một hàm để lấy giá trị của một khóa cụ thể từ từ điển.Bạn có thể xác định một hàm với 6, nhưng thuận tiện khi sử dụng các biểu thức lambda trong trường hợp như vậy.
Biểu cảm lambda trong python
Các ví dụ cho đến nay sử dụng 6, nhưng bạn có thể chỉ định 8 và 7 theo cùng một cách với phương pháp 5 của 2.
Để biết sự khác biệt giữa 5 và 6, hãy xem bài viết sau. 5 sắp xếp chính đối tượng gốc và 6 tạo ra một đối tượng được sắp xếp mới. 0Sắp xếp một danh sách, chuỗi, tuple trong python (sắp xếp, sắp xếp)
1Chỉ định from operator import itemgetter as i from functools import cmp_to_key def cmp(x, y): """ Replacement for built-in function cmp that was removed in Python 3 Compare the two objects x and y and return an integer according to the outcome. The return value is negative if x < y, zero if x == y and strictly positive if x > y. https://portingguide.readthedocs.io/en/latest/comparisons.html#the-cmp-function """ return (x > y) - (x < y) def multikeysort(items, columns): comparers = [ ((i(col[1:].strip()), -1) if col.startswith('-') else (i(col.strip()), 1)) for col in columns ] def comparer(left, right): comparer_iter = ( cmp(fn(left), fn(right)) * mult for fn, mult in comparers ) return next((result for result in comparer_iter if result), 0) return sorted(items, key=cmp_to_key(comparer)) 2 cho tham số from operator import itemgetter as i def multikeysort(items, columns): comparers = [ ((i(col[1:].strip()), -1) if col.startswith('-') else (i(col.strip()), 1)) for col in columns ] def comparer(left, right): comparer_iter = ( cmp(fn(left), fn(right)) * mult for fn, mult in comparers ) return next((result for result in comparer_iter if result), 0) return sorted(items, cmp=comparer) 8Sắp xếp theo nhiều phím
2Các mã mẫu sau đây sử dụng danh sách các từ điển với các khóa chung. Mô -đun Pprint được sử dụng để làm cho đầu ra dễ đọc hơn. 3Sắp xếp theo nhiều phím 4, 5 cho một danh sách từ điển 4Các mã mẫu sau đây sử dụng danh sách các từ điển với các khóa chung. Mô -đun Pprint được sử dụng để làm cho đầu ra dễ đọc hơn. 5Bản in đẹp với pprint trong Python 6Sắp xếp danh sách các từ điển ( 6) bằng phương thức 5 hoặc hàm 6 làm tăng lỗi 7 theo mặc định. 7Điều này là do từ điển không hỗ trợ so sánh với 0, 1, v.v. 8from operator import itemgetter as i from functools import cmp_to_key def cmp(x, y): """ Replacement for built-in function cmp that was removed in Python 3 Compare the two objects x and y and return an integer according to the outcome. The return value is negative if x < y, zero if x == y and strictly positive if x > y. https://portingguide.readthedocs.io/en/latest/comparisons.html#the-cmp-function """ return (x > y) - (x < y) def multikeysort(items, columns): comparers = [ ((i(col[1:].strip()), -1) if col.startswith('-') else (i(col.strip()), 1)) for col in columns ] def comparer(left, right): comparer_iter = ( cmp(fn(left), fn(right)) * mult for fn, mult in comparers ) return next((result for result in comparer_iter if result), 0) return sorted(items, key=cmp_to_key(comparer)) 4, from operator import itemgetter as i from functools import cmp_to_key def cmp(x, y): """ Replacement for built-in function cmp that was removed in Python 3 Compare the two objects x and y and return an integer according to the outcome. The return value is negative if x < y, zero if x == y and strictly positive if x > y. https://portingguide.readthedocs.io/en/latest/comparisons.html#the-cmp-function """ return (x > y) - (x < y) def multikeysort(items, columns): comparers = [ ((i(col[1:].strip()), -1) if col.startswith('-') else (i(col.strip()), 1)) for col in columns ] def comparer(left, right): comparer_iter = ( cmp(fn(left), fn(right)) * mult for fn, mult in comparers ) return next((result for result in comparer_iter if result), 0) return sorted(items, key=cmp_to_key(comparer)) 5 cho một danh sách từ điểnCác mã mẫu sau đây sử dụng danh sách các từ điển với các khóa chung. Mô -đun Pprint được sử dụng để làm cho đầu ra dễ đọc hơn. 9Bản in đẹp với pprint trong Python 0Sắp xếp danh sách các từ điển ( 6) bằng phương thức 5 hoặc hàm 6 làm tăng lỗi 7 theo mặc định. 1Điều này là do từ điển không hỗ trợ so sánh với 0, 1, v.v. 2
Bạn có thể sắp xếp một danh sách các từ điển trong Python không?Chúng ta có thể sắp xếp các danh sách, bộ dữ liệu, chuỗi và các đối tượng khác có thể đi được trong Python vì tất cả chúng đều là đối tượng được đặt hàng. Vâng, kể từ Python 3.7, từ điển cũng nhớ thứ tự của các mục được chèn. Do đó, chúng tôi cũng có thể sắp xếp từ điển bằng cách sử dụng hàm Sắp xếp () tích hợp của Python.we are also able to sort dictionaries using python's built-in sorted() function.
Bạn có thể sắp xếp một từ điển theo các giá trị trong Python không?Để 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.Từ điển là cấu trúc dữ liệu không theo thứ tự.you can use the sorted() function. Python's sorted() function can be used to sort dictionaries by key, which allows for a custom sorting method. sorted() takes three arguments: object, key, and reverse. Dictionaries are unordered data structures.
Bạn có thể sắp xếp các giá trị từ điển không?Không thể sắp xếp một từ điển, chỉ để có được một đại diện của một từ điển được sắp xếp.Từ điển vốn đã không có trật 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 loại dữ liệu được đặt hàng để thể hiện các giá trị được sắp xếp, đây sẽ là một danh sách có lẽ là một danh sách các bộ dữ liệu., only to get a representation of a dictionary that is sorted. Dictionaries are inherently orderless, but other types, such as lists and tuples, are not. So you need an ordered data type to represent sorted values, which will be a list—probably a list of tuples.
Bạn có thể sắp xếp một danh sách các danh sách trong Python không?Bạn có thể sắp xếp một danh sách trong Python bằng phương thức Sort ().Phương thức chấp nhận hai đối số tùy chọn: đảo ngược: sắp xếp danh sách theo thứ tự ngược lại (giảm dần) nếu đúng hoặc theo thứ tự thông thường (tăng dần) nếu sai (theo mặc định). The method accepts two optional arguments: reverse : which sorts the list in the reverse order (descending) if True or in the regular order (ascending) if False (which it is by default) |