Hướng dẫn how do you sort a list in a dictionary python? - làm thế nào để bạn sắp xếp một danh sách trong một từ điển python?

Hàm

import operator
7 có tham số
import operator
8

newlist = sorted(list_to_be_sorted, key=lambda d: d['name']) 

Ngoài ra, bạn có thể sử dụng

import operator
9 thay vì tự xác định chức năng

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 

Để hoàn thiện, thêm

list_of_dicts.sort(key=operator.itemgetter('name'))
0 để sắp xếp theo thứ tự giảm dần

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)

Hướng dẫn how do you sort a list in a dictionary python? - làm thế nào để bạn sắp xếp một danh sách trong một từ điển python?

wjandrea

25.2k8 Huy hiệu vàng54 Huy hiệu bạc75 Huy hiệu Đồng8 gold badges54 silver badges75 bronze badges

Đã trả lời ngày 16 tháng 9 năm 2008 lúc 14:39Sep 16, 2008 at 14:39

14

import operator

Để sắp xếp danh sách từ điển theo phím = 'name':

list_of_dicts.sort(key=operator.itemgetter('name'))

Để sắp xếp danh sách từ điển theo khóa = 'tuổi':

list_of_dicts.sort(key=operator.itemgetter('age'))

Cedbeu

1.83914 Huy hiệu bạc24 Huy hiệu đồng14 silver badges24 bronze badges

Đã trả lời ngày 16 tháng 9 năm 2008 lúc 15:18Sep 16, 2008 at 15:18

4

my_list = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

my_list.sort(lambda x,y : cmp(x['name'], y['name']))

list_of_dicts.sort(key=operator.itemgetter('name'))
1 bây giờ sẽ là những gì bạn muốn.

Hoặc tốt hơn:

Kể từ Python 2.4, có một đối số

list_of_dicts.sort(key=operator.itemgetter('name'))
2 vừa hiệu quả hơn và gọn gàng hơn:

my_list = sorted(my_list, key=lambda k: k['name'])

... Lambda là, IMO, dễ hiểu hơn

import operator
9, nhưng số dặm của bạn có thể khác nhau.

Đã trả lời ngày 16 tháng 9 năm 2008 lúc 14:39Sep 16, 2008 at 14:39

Để sắp xếp danh sách từ điển theo phím = 'name':pjz

Để sắp xếp danh sách từ điển theo khóa = 'tuổi':6 gold badges48 silver badges60 bronze badges

3

Cedbeu

my_list = [{'name':'Homer', 'age':39}, {'name':'Milhouse', 'age':10}, {'name':'Bart', 'age':10} ]
sortedlist = sorted(my_list , key=lambda elem: "%02d %s" % (elem['age'], elem['name']))

1.83914 Huy hiệu bạc24 Huy hiệu đồng

4

a = [{'name':'Homer', 'age':39}, ...]

# This changes the list a
a.sort(key=lambda k : k['name'])

# This returns a new list (a is not modified)
sorted(a, key=lambda k : k['name']) 

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 
0

Đã trả lời ngày 16 tháng 9 năm 2008 lúc 15:18

list_of_dicts.sort(key=operator.itemgetter('name'))
1 bây giờ sẽ là những gì bạn muốn.Sep 16, 2008 at 14:43

Hoặc tốt hơn:efotinis

Kể từ Python 2.4, có một đối số

list_of_dicts.sort(key=operator.itemgetter('name'))
2 vừa hiệu quả hơn và gọn gàng hơn:5 gold badges31 silver badges36 bronze badges

... Lambda là, IMO, dễ hiểu hơn

import operator
9, nhưng số dặm của bạn có thể khác nhau.

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 
1

Pjzpjz

40,8K6 Huy hiệu vàng48 Huy hiệu bạc60 Huy hiệu Đồng

Nếu bạn muốn sắp xếp danh sách theo nhiều khóa, bạn có thể làm như sau:Sep 16, 2008 at 14:36

Nó khá hackish, vì nó dựa vào việc chuyển đổi các giá trị thành một biểu diễn chuỗi duy nhất để so sánh, nhưng nó hoạt động như mong đợi đối với các số bao gồm các số âm (mặc dù bạn sẽ cần định dạng chuỗi của mình một cách thích hợp với số 0 nếu bạn đang sử dụng số).

'Key' được sử dụng để sắp xếp theo giá trị tùy ý và 'itemgetter' đặt giá trị đó cho thuộc tính 'tên' của mỗi mục.

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 
3

Đã trả lời ngày 16 tháng 9 năm 2008 lúc 14:43

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 
4

efotinisefotinisSep 16, 2008 at 14:52

14.2k5 Huy hiệu vàng31 Huy hiệu bạc36 Huy hiệu đồngOwen

Tôi đoán bạn có nghĩa là:6 silver badges6 bronze badges

Điều này sẽ được sắp xếp như thế này:

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 
5

do

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 
6

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 
2

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 
7

Đã trả lời ngày 16 tháng 9 năm 2008 lúc 14:36

Bạn có thể sử dụng hàm so sánh tùy chỉnh hoặc bạn có thể chuyển trong một hàm tính toán khóa sắp xếp tùy chỉnh. Điều đó thường hiệu quả hơn vì khóa chỉ được tính một lần cho mỗi mục, trong khi hàm so sánh sẽ được gọi là nhiều lần hơn.

1

Bạn có thể làm theo cách này:

Nhưng thư viện tiêu chuẩn chứa một thói quen chung để có được các mục của các đối tượng tùy ý:

list_of_dicts.sort(key=operator.itemgetter('name'))
4. Vì vậy, hãy thử điều này thay thế:Sep 16, 2008 at 14:31

Đã trả lời ngày 16 tháng 9 năm 2008 lúc 14:52Matej

Owenowen2 gold badges27 silver badges27 bronze badges

2

8716 Huy hiệu bạc6 Huy hiệu Đồng

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 
8

1

Sử dụng biến đổi Schwartzian từ Perl,

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name')) 
9

cho

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
0

2

Thông tin thêm về biến đổi Perl Schwartzian:

Trong khoa học máy tính, biến đổi Schwartzian là một thành ngữ lập trình Perl được sử dụng để cải thiện hiệu quả của việc sắp xếp một danh sách các mục. Thành ngữ này phù hợp để sắp xếp dựa trên so sánh khi đặt hàng thực sự dựa trên thứ tự của một thuộc tính nhất định (khóa) của các yếu tố, trong đó tính toán thuộc tính đó là một hoạt động chuyên sâu nên được thực hiện một số lần tối thiểu. Biến đổi Schwartzian đáng chú ý ở chỗ nó không sử dụng các mảng tạm thời được đặt tên.

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
1

1

Bạn phải thực hiện chức năng so sánh của riêng bạn sẽ so sánh các từ điển bằng các giá trị của các khóa tên. Xem Sắp xếp Mini-How từ Pythoninfo Wiki

Đã trả lời ngày 16 tháng 9 năm 2008 lúc 14:31

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
2

MateJMateJ

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
3

5,8402 Huy hiệu vàng27 Huy hiệu bạc27 Huy hiệu đồng

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
4

Đôi khi chúng ta cần sử dụng

list_of_dicts.sort(key=operator.itemgetter('name'))
5. Ví dụ,

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
5

Sử dụng gói Pandas là một phương pháp khác, mặc dù thời gian chạy của nó ở quy mô lớn chậm hơn nhiều so với các phương pháp truyền thống hơn được đề xuất bởi những người khác:

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
6

Dưới đây là một số giá trị điểm chuẩn cho một danh sách nhỏ và danh sách các dicts lớn (100k+):

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
7

Dưới đây là giải pháp chung thay thế - nó sắp xếp các yếu tố của một dict bằng các khóa và giá trị.

Ưu điểm của nó - không cần chỉ định các khóa và nó vẫn hoạt động nếu một số khóa bị thiếu trong một số từ điển.

Nếu bạn không cần list_of_dicts.sort(key=operator.itemgetter('name')) 6 gốc của list_of_dicts.sort(key=operator.itemgetter('name')) 7, bạn có thể sửa đổi nó tại chỗ bằng phương thức list_of_dicts.sort(key=operator.itemgetter('name')) 8 bằng cách sử dụng chức năng khóa tùy chỉnh.

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
8

Chức năng chính:

newlist = sorted(list_to_be_sorted, key=itemgetter('name'), reverse=True)
9

list_of_dicts.sort(key=operator.itemgetter('name')) 6 sẽ được sắp xếp:

import operator
0

Sắp xếp nó tại chỗ:

import operator
1

Nếu bạn cần

list_of_dicts.sort(key=operator.itemgetter('name'))
6 ban đầu, hãy gọi hàm
import operator
7 chuyển nó là
list_of_dicts.sort(key=operator.itemgetter('name'))
6 và chức năng chính, sau đó gán cho
list_of_dicts.sort(key=operator.itemgetter('name'))
6 được trả về cho một biến mới:

In

list_of_dicts.sort(key=operator.itemgetter('age'))
4 và
list_of_dicts.sort(key=operator.itemgetter('age'))
5.

Từ https://wiki.python.org/moin/pythonspeed:

Tương tự như vậy, các chức năng tích hợp chạy nhanh hơn các tương đương được xây dựng bằng tay. Ví dụ: MAP (Toán tử.ADD, V1, V2) nhanh hơn Bản đồ (Lambda X, Y: X+Y, V1, V2).

Dưới đây là so sánh tốc độ sắp xếp bằng cách sử dụng

list_of_dicts.sort(key=operator.itemgetter('age'))
9 so với
list_of_dicts.sort(key=operator.itemgetter('name'))
4.

import operator
2

Cả hai kỹ thuật đều sắp xếp danh sách theo cùng một thứ tự (được xác minh bằng cách thực hiện câu lệnh cuối cùng trong khối mã), nhưng cái đầu tiên nhanh hơn một chút.

Như được chỉ ra bởi @claudiu cho @monojohnny trong phần bình luận của câu trả lời này, đã cho:
given:

import operator
3

Để sắp xếp danh sách từ điển theo khóa

my_list = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

my_list.sort(lambda x,y : cmp(x['name'], y['name']))
4,
my_list = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

my_list.sort(lambda x,y : cmp(x['name'], y['name']))
5 (như trong câu lệnh SQL
my_list = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

my_list.sort(lambda x,y : cmp(x['name'], y['name']))
6), bạn có thể sử dụng:
(like in SQL statement
my_list = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

my_list.sort(lambda x,y : cmp(x['name'], y['name']))
6), you can use:

import operator
4

Hoặc, tương tự như vậy

import operator
5

my_list = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

my_list.sort(lambda x,y : cmp(x['name'], y['name']))
7

.
{'name': 'Milhouse', 'age': 10},
{'name': 'Homer', 'age': 39}]

Sắp xếp theo nhiều cột, trong khi theo thứ tự giảm dần trên một số trong số chúng: mảng CMPS toàn cầu với hàm CMP, chứa tên trường và inv == -1 cho desc 1 cho ASC

import operator
6

Bạn có thể sử dụng sắp xếp trên một python từ điển không?

Giới thiệu. 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 các giá trị trong một từ điển?

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 danh sách trong Python không?

Danh sách Python có một phương thức Danh sách tích hợp.Sort () sửa đổi danh sách tại chỗ.Ngoài ra còn có một hàm tích hợp được sắp xếp () xây dựng một danh sách được sắp xếp mới từ một điều đáng tin cậy.. There is also a sorted() built-in function that builds a new sorted list from an iterable.

Những cách khác nhau để sắp xếp từ điển trong Python là gì?

Sắp xếp một từ điển Python: Giá trị, khóa, và nhiều hơn nữa..
Sử dụng hàm Sắp xếp () ..
Nhận chìa khóa, giá trị hoặc cả hai từ từ điển ..
Hiểu làm thế nào Python sắp xếp các bộ dữ liệu ..
Sử dụng tham số chính và các hàm Lambda ..
Chọn một giá trị lồng nhau với một phím sắp xếp ..
Chuyển đổi trở lại từ điển ..