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

Python 3.7+ hoặc Cpython 3.6

Dicts bảo tồn thứ tự chèn trong Python 3.7+. Tương tự trong Cpython 3.6, nhưng đó là một chi tiết triển khai.

>>> x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
>>> {k: v for k, v in sorted(x.items(), key=lambda item: item[1])}
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}

hoặc

>>> dict(sorted(x.items(), key=lambda item: item[1]))
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}

Python cũ hơ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.

Ví dụ,

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))

from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
3 sẽ là một danh sách các bộ dữ liệu được sắp xếp theo phần tử thứ hai trong mỗi tuple.
from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
4.

Và cho những người muốn sắp xếp các khóa thay vì các giá trị:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))

Trong Python3 vì việc giải nén không được phép chúng tôi có thể sử dụng

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])

Nếu bạn muốn đầu ra là một dict, bạn có thể sử dụng

from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
5:

import collections

sorted_dict = collections.OrderedDict(sorted_x)

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

wjandrea

24.9k8 Huy hiệu vàng53 Huy hiệu bạc73 Huy hiệu đồng8 gold badges53 silver badges73 bronze badges

Đã trả lời ngày 5 tháng 3 năm 2009 lúc 0:59Mar 5, 2009 at 0:59

Devin Jeanpierredevin JeanpierreDevin Jeanpierre

90.1k4 Huy hiệu vàng55 Huy hiệu bạc79 Huy hiệu đồng4 gold badges55 silver badges79 bronze badges

10

Đơn giản như: from collections import defaultdict d = defaultdict(int) for w in text.split(): d[w] += 1 6

Vâng, thực sự có thể thực hiện một "sự sắp xếp theo giá trị từ điển". Gần đây tôi phải làm điều đó trong một golf mã (Stack Overflow Code Code Golf: Biểu đồ tần số từ). Tóm tắt, vấn đề thuộc loại: đưa ra một văn bản, đếm tần suất mỗi từ gặp và hiển thị một danh sách các từ trên cùng, được sắp xếp bằng tần số giảm.

Nếu bạn xây dựng một từ điển với các từ dưới dạng các khóa và số lần xuất hiện của mỗi từ là giá trị, hãy đơn giản hóa ở đây như:

from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1

Sau đó, bạn có thể nhận được một danh sách các từ, được đặt hàng theo tần suất sử dụng với

from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
7 - sắp xếp lặp lại các khóa từ điển, sử dụng số lượng từ xuất hiện làm khóa sắp xếp.

for w in sorted(d, key=d.get, reverse=True):
    print(w, d[w])

Tôi đang viết lời giải thích chi tiết này để minh họa những gì mọi người thường có nghĩa là "Tôi có thể dễ dàng sắp xếp một từ điển theo khóa, nhưng làm cách nào để sắp xếp theo giá trị" - và tôi nghĩ rằng bài đăng gốc đang cố gắng giải quyết vấn đề như vậy. Và giải pháp là thực hiện các loại danh sách các khóa, dựa trên các giá trị, như được hiển thị ở trên.

Đã trả lời ngày 5 tháng 7 năm 2010 lúc 8:01Jul 5, 2010 at 8:01

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

3

Bạn đã có thể sử dụng:

sorted(d.items(), key=lambda x: x[1])

Điều này sẽ sắp xếp từ điển theo các giá trị của mỗi mục trong từ điển từ nhỏ nhất đến lớn nhất.

Để sắp xếp nó theo thứ tự giảm dần chỉ cần thêm

from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
8:

sorted(d.items(), key=lambda x: x[1], reverse=True)

Input:

>>> dict(sorted(x.items(), key=lambda item: item[1]))
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
0

Output:

>>> dict(sorted(x.items(), key=lambda item: item[1]))
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
1

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

Suresh2692

3.6533 huy hiệu vàng15 Huy hiệu bạc25 Huy hiệu đồng3 gold badges15 silver badges25 bronze badges

Đã trả lời ngày 13 tháng 2 năm 2010 lúc 16:33Feb 13, 2010 at 16:33

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

MarkmarkMark

11.1k1 Huy hiệu vàng14 Huy hiệu bạc5 Huy hiệu đồng1 gold badge14 silver badges5 bronze badges

6

Dicts không thể được sắp xếp, nhưng bạn có thể xây dựng một danh sách được sắp xếp từ họ.

Một danh sách được sắp xếp các giá trị dict:

>>> dict(sorted(x.items(), key=lambda item: item[1]))
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
2

Một danh sách các cặp (khóa, giá trị), được sắp xếp theo giá trị:

>>> dict(sorted(x.items(), key=lambda item: item[1]))
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
3

Đã trả lời ngày 5 tháng 3 năm 2009 lúc 1:05Mar 5, 2009 at 1:05

3

Trong Python 2.7 gần đây, chúng tôi có loại OrderedDict mới, nhớ rằng thứ tự được thêm vào.

>>> dict(sorted(x.items(), key=lambda item: item[1]))
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
4

Để tạo một từ điển mới được đặt hàng từ bản gốc, sắp xếp theo các giá trị:

>>> dict(sorted(x.items(), key=lambda item: item[1]))
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
5

Đơn đặt hàng hành xử như một dict bình thường:

>>> dict(sorted(x.items(), key=lambda item: item[1]))
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
6

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

Đã trả lời ngày 5 tháng 7 năm 2010 lúc 2:50Jul 5, 2010 at 2:50

Mykhalmykhalmykhal

Phù hiệu vàng 18.6K1171 Huy hiệu bạc78 Huy hiệu đồng11 gold badges71 silver badges78 bronze badges

7

Sử dụng Python 3.5

Mặc dù tôi thấy câu trả lời được chấp nhận hữu ích, tôi cũng ngạc nhiên rằng nó chưa được cập nhật để tham khảo LệnhDdict từ mô -đun Bộ sưu tập thư viện tiêu chuẩn như một sự thay thế hiện đại, khả thi - được thiết kế để giải quyết chính xác loại vấn đề này.OrderedDict from the standard library collections module as a viable, modern alternative - designed to solve exactly this type of problem.

>>> dict(sorted(x.items(), key=lambda item: item[1]))
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
7

Tài liệu chính thức đặt hàng cũng cung cấp một ví dụ rất giống nhau, nhưng sử dụng Lambda cho chức năng sắp xếp:OrderedDict documentation offers a very similar example too, but using a lambda for the sort function:

>>> dict(sorted(x.items(), key=lambda item: item[1]))
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
8

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

Đã trả lời ngày 5 tháng 12 năm 2015 lúc 9:46Dec 5, 2015 at 9:46

Arcseldonarcseldonarcseldon

33.7K16 Huy hiệu vàng117 Huy hiệu bạc120 Huy hiệu đồng16 gold badges117 silver badges120 bronze badges

1

Khá giống như câu trả lời của Hank Gay:

>>> dict(sorted(x.items(), key=lambda item: item[1]))
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
9

Hoặc được tối ưu hóa một chút như đề xuất của John Fouhy:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
0

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

Đã trả lời ngày 5 tháng 3 năm 2009 lúc 1:06Mar 5, 2009 at 1:06

user26294user26294user26294

5.2973 Huy hiệu vàng22 Huy hiệu bạc18 Huy hiệu đồng3 gold badges22 silver badges18 bronze badges

4

Theo Python 3.6, dict tích hợp sẽ được đặt hàng

Tin tốt, vì vậy trường hợp sử dụng ban đầu của các cặp ánh xạ của OP được lấy từ cơ sở dữ liệu với ID chuỗi duy nhất làm khóa và giá trị số làm giá trị thành một Python v3.6+ Dict tích hợp, giờ đây sẽ tôn trọng thứ tự chèn.

Nếu nói hai biểu thức bảng kết quả từ truy vấn cơ sở dữ liệu như:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
1

sẽ được lưu trữ trong hai bộ dữ liệu python, k_seq và v_seq (được căn chỉnh theo chỉ số số và với cùng một độ dài tất cả), sau đó:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
2

Cho phép xuất ra sau như:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
3

năng suất trong trường hợp này (đối với Python 3.6+ mới được tích hợp Dict!):

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
4

Trong cùng một thứ tự cho mỗi giá trị của v.

Trong trường hợp trong cài đặt Python 3.5 trên máy của tôi hiện đang mang lại:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
5

Details:

Như đề xuất vào năm 2012 bởi Raymond Hettinger (x Compact và nhận được phiên bản riêng tư, và các từ khóa được đặt hàng "do sửa chữa/thực hiện vấn đề 27350" Compact và Order Dict "trong Python 3.6 Bây giờ chúng tôi sẽ có thể sử dụng một dict tích hợp để duy trì thứ tự chèn !!

Hy vọng rằng điều này sẽ dẫn đến việc thực hiện Layer LayerDDICT như một bước đầu tiên. Như @Jimfasarakis-Hilliard đã chỉ ra, một số trường hợp sử dụng cho loại đặt hàng cũng có trong tương lai. Tôi nghĩ rằng cộng đồng Python nói chung sẽ kiểm tra cẩn thận, nếu điều này sẽ đứng trước thử thách của thời gian, và các bước tiếp theo sẽ là gì.

Thời gian để suy nghĩ lại về thói quen mã hóa của chúng tôi để không bỏ lỡ các khả năng được mở ra bằng cách đặt hàng ổn định của:

  • Từ khóa đối số và
  • (Trung cấp) Dict Storage

Đầu tiên bởi vì nó giúp giảm bớt việc thực hiện các chức năng và phương pháp trong một số trường hợp.

Thứ hai vì nó khuyến khích sử dụng

from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
9s dễ dàng hơn làm lưu trữ trung gian trong các đường ống xử lý.

Raymond Hettinger vui lòng cung cấp tài liệu giải thích "Công nghệ đằng sau từ điển Python 3,6"-từ bài thuyết trình của Tập đoàn Cuộc họp San Francisco Python 2016-Dec-08.

Và có thể khá một số trang câu hỏi và câu trả lời được trang trí cao sẽ nhận được các biến thể của thông tin này và nhiều câu trả lời chất lượng cao cũng sẽ yêu cầu cập nhật cho mỗi phiên bản.

Caveat Emptor (nhưng cũng xem bên dưới cập nhật 2017-12-15):

Như @AJCR lưu ý đúng: "Khía cạnh bảo tồn đơn đặt hàng của triển khai mới này được coi là một chi tiết thực hiện và không nên dựa vào." (từ whatsnew36) không chọn nit, nhưng trích dẫn đã bị cắt một chút bi quan ;-). Nó tiếp tục là "(điều này có thể thay đổi trong tương lai, nhưng mong muốn thực hiện Dict mới này trong ngôn ngữ cho một vài bản phát hành trước khi thay đổi thông số ngôn ngữ để bắt buộc ngữ nghĩa bảo tồn đơn đặt hàng cho tất cả các triển khai Python hiện tại và tương lai; Giúp bảo tồn khả năng tương thích ngược với các phiên bản cũ hơn của ngôn ngữ nơi thứ tự lặp ngẫu nhiên vẫn có hiệu lực, ví dụ: Python 3.5). "but the citation was cut a bit pessimistic ;-). It continues as " (this may change in the future, but it is desired to have this new dict implementation in the language for a few releases before changing the language spec to mandate order-preserving semantics for all current and future Python implementations; this also helps preserve backwards-compatibility with older versions of the language where random iteration order is still in effect, e.g. Python 3.5)."

Vì vậy, như trong một số ngôn ngữ con người (ví dụ: tiếng Đức), việc sử dụng định hình ngôn ngữ và bây giờ sẽ được tuyên bố ... trong whatsnew36.

Cập nhật 2017-12-15:

Trong một thư đến danh sách Python-Dev, Guido Van Rossum đã tuyên bố:

Làm cho nó như vậy. "Dict giữ lệnh chèn" là phán quyết. Cảm ơn!

Vì vậy, phiên bản 3.6 Cpython tác dụng phụ của đặt hàng chèn dict hiện đang trở thành một phần của thông số ngôn ngữ (và không còn là một chi tiết thực hiện). Chủ đề thư đó cũng xuất hiện một số mục tiêu thiết kế khác biệt cho

from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
5 theo lời nhắc nhở của Raymond Hettinger trong khi thảo luận.

Đã trả lời ngày 10 tháng 9 năm 2016 lúc 10:05Sep 10, 2016 at 10:05

DilettantdilettantDilettant

3.1693 huy hiệu vàng29 Huy hiệu bạc28 Huy hiệu đồng3 gold badges29 silver badges28 bronze badges

3

Nó thường có thể rất tiện dụng để sử dụng có tên. Ví dụ: bạn có một từ điển 'tên' là phím và 'điểm' là giá trị và bạn muốn sắp xếp 'điểm':namedtuple. For example, you have a dictionary of 'name' as keys and 'score' as values and you want to sort on 'score':

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
6

Sắp xếp với điểm số thấp nhất đầu tiên:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
7

Sắp xếp với điểm số cao nhất đầu tiên:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
8

Bây giờ bạn có thể nhận được tên và điểm số của, giả sử người chơi tốt thứ hai (index = 1) rất giống như thế này:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
9

vallentin

22K6 Huy hiệu vàng56 Huy hiệu bạc76 Huy hiệu Đồng6 gold badges56 silver badges76 bronze badges

Đã trả lời ngày 30 tháng 8 năm 2011 lúc 0:30Aug 30, 2011 at 0:30

RemiremiRemi

Huy hiệu vàng 19,9K855 Huy hiệu bạc41 Huy hiệu đồng8 gold badges55 silver badges41 bronze badges

2

Tôi đã có cùng một vấn đề, và tôi đã giải quyết nó như thế này:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
0

. các khóa được sắp xếp theo giá trị của giá trị của chúng.)

Xin lưu ý rằng thứ tự không được xác định rõ (các khóa có cùng giá trị sẽ theo thứ tự tùy ý trong danh sách đầu ra).

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

Đã trả lời ngày 18 tháng 11 năm 2010 lúc 14:19Nov 18, 2010 at 14:19

Jimifikijimifikijimifiki

5.2441 Huy hiệu vàng32 Huy hiệu bạc56 Huy hiệu đồng1 gold badge32 silver badges56 bronze badges

2

Nếu các giá trị là số bạn cũng có thể sử dụng

for w in sorted(d, key=d.get, reverse=True):
    print(w, d[w])
1 từ các bộ sưu tập.

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
1

Georgy

10,9k7 Huy hiệu vàng62 Huy hiệu bạc68 Huy hiệu Đồng7 gold badges62 silver badges68 bronze badges

Đã trả lời ngày 27 tháng 6 năm 2012 lúc 15:43Jun 27, 2012 at 15:43

Ivan Sasivan SasIvan Sas

9931 Huy hiệu vàng9 Huy hiệu bạc14 Huy hiệu đồng1 gold badge9 silver badges14 bronze badges

2

Trong Python 2.7, chỉ cần làm:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
2

sao chép-paste từ: http://docs.python.org/dev/l Library

Vui thích ;-)

Đã trả lời ngày 22 tháng 8 năm 2013 lúc 8:38Aug 22, 2013 at 8:38

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

Sweetdreamsweetdreamsweetdream

1.18111 Huy hiệu bạc14 Huy hiệu đồng11 silver badges14 bronze badges

Đây là mã:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
3

Đây là kết quả:

Nguyên bản

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
4

ROFL

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
5

Thứ hạng

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
6

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

nước đá

4.5723 Huy hiệu vàng33 Huy hiệu bạc47 Huy hiệu đồng3 gold badges33 silver badges47 bronze badges

Đã trả lời ngày 8 tháng 3 năm 2011 lúc 2:06Mar 8, 2011 at 2:06

PedromorganpedromorganPedroMorgan

89812 Huy hiệu bạc15 Huy hiệu đồng12 silver badges15 bronze badges

Hãy thử cách tiếp cận sau. Chúng ta hãy xác định một từ điển gọi là MyDICT với các dữ liệu sau:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
7

Nếu một người muốn sắp xếp từ điển theo phím, người ta có thể làm một cái gì đó như:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
8

Điều này sẽ trả về đầu ra sau:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
9

Mặt khác, nếu người ta muốn sắp xếp một từ điển theo giá trị (như được hỏi trong câu hỏi), người ta có thể làm như sau:

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])
0

Kết quả của lệnh này (sắp xếp từ điển theo giá trị) sẽ trả về như sau:

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])
1

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

Đã trả lời ngày 7 tháng 4 năm 2014 lúc 4:46Apr 7, 2014 at 4:46

Nathaniel Paynenathaniel PayneNathaniel Payne

2.7191 Huy hiệu vàng26 Huy hiệu bạc32 Huy hiệu đồng1 gold badge26 silver badges32 bronze badges

2

Bắt đầu từ các đối tượng Python 3.6,

from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
9 hiện được đặt hàng theo thứ tự chèn. Nó chính thức trong các thông số kỹ thuật của Python 3.7.

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])
2

Trước đó, bạn đã phải sử dụng

for w in sorted(d, key=d.get, reverse=True):
    print(w, d[w])
3.

Tài liệu Python 3.7 cho biết:

Thay đổi trong phiên bản 3.7: Thứ tự từ điển được đảm bảo là thứ tự chèn. Hành vi này là chi tiết thực hiện của CPython từ 3.6.

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

Đã trả lời ngày 15 tháng 9 năm 2018 lúc 13:37Sep 15, 2018 at 13:37

Maxime Chéramymaxime ChéramyMaxime Chéramy

16.8k8 Huy hiệu vàng52 Huy hiệu bạc74 Huy hiệu đồng8 gold badges52 silver badges74 bronze badges

1

Bạn cũng có thể tạo một "chỉ mục đảo ngược", cũng

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])
3

Bây giờ nghịch đảo của bạn có các giá trị; Mỗi giá trị có một danh sách các khóa áp dụng.

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])
4

Đã trả lời ngày 5 tháng 3 năm 2009 lúc 1:52Mar 5, 2009 at 1:52

S.LottS.LottS.Lott

377K78 Huy hiệu vàng503 Huy hiệu bạc772 Huy hiệu Đồng78 gold badges503 silver badges772 bronze badges

Bạn có thể sử dụng bộ sưu tập. Lưu ý, điều này sẽ hoạt động cho cả giá trị số và không số.

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])
5

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

Đã trả lời ngày 9 tháng 3 năm 2013 lúc 12:30Mar 9, 2013 at 12:30

AbhijitabhijitAbhijit

60.2K18 Huy hiệu vàng127 Huy hiệu bạc198 Huy hiệu đồng18 gold badges127 silver badges198 bronze badges

1

Giải pháp bộ sưu tập được đề cập trong một câu trả lời khác là hoàn toàn tuyệt vời, bởi vì bạn giữ lại kết nối giữa khóa và giá trị mà trong trường hợp từ điển là vô cùng quan trọng.

Tôi không đồng ý với lựa chọn số một được trình bày trong một câu trả lời khác, bởi vì nó vứt bỏ các phím.

Tôi đã sử dụng giải pháp được đề cập ở trên (mã hiển thị bên dưới) và giữ quyền truy cập vào cả khóa và giá trị và trong trường hợp của tôi, đặt hàng là trên các giá trị, nhưng tầm quan trọng là thứ tự của các khóa sau khi đặt hàng các giá trị.

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])
6

Đã trả lời ngày 3 tháng 3 năm 2014 lúc 14:58Mar 3, 2014 at 14:58

Eamonn Kennyeamonn KennyEamonn Kenny

1.73116 huy hiệu bạc18 Huy hiệu đồng16 silver badges18 bronze badges

0

Bạn có thể sử dụng một chế độ bỏ qua là một từ điển được sắp xếp vĩnh viễn theo giá trị.

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])
7

Nếu bạn sử dụng

for w in sorted(d, key=d.get, reverse=True):
    print(w, d[w])
4,
for w in sorted(d, key=d.get, reverse=True):
    print(w, d[w])
5 hoặc
for w in sorted(d, key=d.get, reverse=True):
    print(w, d[w])
6 thì bạn sẽ lặp lại theo thứ tự được sắp xếp theo giá trị.

Nó được triển khai bằng cách sử dụng cơ sở hạ tầng Danh sách Bỏ qua.

Đã trả lời ngày 25 tháng 9 năm 2014 lúc 22:56Sep 25, 2014 at 22:56

Malthemalthemalthe

1.00411 Huy hiệu bạc22 Huy hiệu đồng11 silver badges22 bronze badges

2

Bạn cũng có thể sử dụng một chức năng tùy chỉnh có thể được chuyển đến khóa tham số.

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])
8

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

Đã trả lời ngày 25 tháng 5 năm 2017 lúc 18:13May 25, 2017 at 18:13

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

2

Tất nhiên, hãy nhớ rằng, bạn cần sử dụng

for w in sorted(d, key=d.get, reverse=True):
    print(w, d[w])
3 vì từ điển Python thông thường không giữ thứ tự ban đầu.

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])
9

Nếu bạn không có Python 2.7 trở lên, tốt nhất bạn có thể làm là lặp lại các giá trị trong hàm máy phát. (Có một

for w in sorted(d, key=d.get, reverse=True):
    print(w, d[w])
3 cho 2.4 và 2.6 ở đây, nhưng

a) Tôi không biết về nó hoạt động tốt như thế nào

b) Bạn phải tải xuống và cài đặt tất nhiên. Nếu bạn không có quyền truy cập hành chính, thì tôi sợ tùy chọn ra.)


import collections

sorted_dict = collections.OrderedDict(sorted_x)
0

Bạn cũng có thể in ra mọi giá trị

import collections

sorted_dict = collections.OrderedDict(sorted_x)
1

Hãy nhớ loại bỏ dấu ngoặc sau khi in nếu không sử dụng Python 3.0 trở lên

Georgy

10,9k7 Huy hiệu vàng62 Huy hiệu bạc68 Huy hiệu Đồng7 gold badges62 silver badges68 bronze badges

Đã trả lời ngày 31 tháng 7 năm 2015 lúc 8:08Jul 31, 2015 at 8:08

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

rassa45rassa45rassa45

3,4161 Huy hiệu vàng28 Huy hiệu bạc43 Huy hiệu đồng1 gold badge28 silver badges43 bronze badges

1

import collections

sorted_dict = collections.OrderedDict(sorted_x)
2

Đã trả lời ngày 1 tháng 11 năm 2010 lúc 12:16Nov 1, 2010 at 12:16

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

ArgunargunArgun

4175 Huy hiệu bạc20 Huy hiệu Đồng5 silver badges20 bronze badges

1

Dưới đây là một giải pháp sử dụng ZIP trên

for w in sorted(d, key=d.get, reverse=True):
    print(w, d[w])
9 và
sorted(d.items(), key=lambda x: x[1])
0. Một vài dòng xuống liên kết này (trên các đối tượng xem từ điển) là:

Điều này cho phép tạo các cặp (giá trị, khóa) bằng Zip (): cặp = zip (D.Values ​​(), D.Keys ()).

Vì vậy, chúng tôi có thể làm như sau:

import collections

sorted_dict = collections.OrderedDict(sorted_x)
3

Đã trả lời ngày 20 tháng 6 năm 2015 lúc 1:44Jun 20, 2015 at 1:44

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

ScottscottScott

5.7614 Huy hiệu vàng34 Huy hiệu bạc 50 Huy hiệu Đồng4 gold badges34 silver badges50 bronze badges

0

Như được chỉ ra bởi Dilettant, Python 3.6 bây giờ sẽ giữ trật tự! Tôi nghĩ rằng tôi sẽ chia sẻ một chức năng mà tôi đã viết giúp giảm bớt sự sắp xếp của một điều khác (tuple, danh sách, dict). Trong trường hợp sau, bạn có thể sắp xếp các khóa hoặc giá trị và nó có thể tính đến số lượng so sánh. Chỉ dành cho> = 3.6!Only for >= 3.6!

Khi bạn thử sử dụng Sắp xếp trên một thứ có thể giữ được, ví dụ: Chuỗi cũng như ints, sort () sẽ thất bại. Tất nhiên bạn có thể buộc so sánh chuỗi với str (). Tuy nhiên, trong một số trường hợp bạn muốn so sánh số thực tế trong đó

sorted(d.items(), key=lambda x: x[1])
1 nhỏ hơn
sorted(d.items(), key=lambda x: x[1])
2 (không phải là trường hợp trong so sánh chuỗi). Vì vậy, tôi đã nghĩ ra những điều sau đây. Khi bạn muốn so sánh số rõ ràng, bạn có thể sử dụng cờ
sorted(d.items(), key=lambda x: x[1])
3 sẽ cố gắng phân loại số rõ ràng bằng cách cố gắng chuyển đổi tất cả các giá trị thành phao. Nếu điều đó thành công, nó sẽ sắp xếp số, nếu không nó sẽ dùng đến so sánh chuỗi.

Nhận xét để cải thiện chào mừng.

import collections

sorted_dict = collections.OrderedDict(sorted_x)
4

Đã trả lời ngày 2 tháng 3 năm 2018 lúc 16:48Mar 2, 2018 at 16:48

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

Bram Vanroybram VanroyBram Vanroy

25.7K23 Huy hiệu vàng125 Huy hiệu bạc224 Huy hiệu đồng23 gold badges125 silver badges224 bronze badges

Tôi vừa học được một kỹ năng liên quan từ Python cho mọi người.

Bạn có thể sử dụng danh sách tạm thời để giúp bạn sắp xếp từ điển:

import collections

sorted_dict = collections.OrderedDict(sorted_x)
5

Nếu bạn muốn sắp xếp danh sách theo thứ tự giảm dần, chỉ cần thay đổi dòng sắp xếp ban đầu thành:

import collections

sorted_dict = collections.OrderedDict(sorted_x)
6

Sử dụng danh sách hiểu, một lớp lót sẽ là:

import collections

sorted_dict = collections.OrderedDict(sorted_x)
7

Đầu ra mẫu:

import collections

sorted_dict = collections.OrderedDict(sorted_x)
8

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

Đã trả lời ngày 27 tháng 5 năm 2018 lúc 17:45May 27, 2018 at 17:45

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

McGagmcgagmcgag

Huy hiệu Huy hiệu Bạc 19511 silver badge13 bronze badges

1

Sử dụng giá trịTedDict từ dicts:ValueSortedDict from dicts:

import collections

sorted_dict = collections.OrderedDict(sorted_x)
9

Đã trả lời ngày 19 tháng 10 năm 2011 lúc 6:25Oct 19, 2011 at 6:25

Pontypontyponty

6148 Huy hiệu bạc8 Huy hiệu đồng8 silver badges8 bronze badges

Lặp lại thông qua một dict và sắp xếp nó theo các giá trị của nó theo thứ tự giảm dần:

from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
0

Đã trả lời ngày 30 tháng 10 năm 2011 lúc 19:42Oct 30, 2011 at 19:42

Juhohjuhohjuhoh

1091 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges

Nếu giá trị của bạn là số nguyên và bạn sử dụng Python 2.7 hoặc mới hơn, bạn có thể sử dụng

sorted(d.items(), key=lambda x: x[1])
4 thay vì
from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
9. Phương thức
sorted(d.items(), key=lambda x: x[1])
6 sẽ cung cấp cho bạn tất cả các mục, được sắp xếp theo giá trị.

Đã trả lời ngày 24 tháng 1 năm 2012 lúc 19:28Jan 24, 2012 at 19:28

Petr Viktorinpetr ViktorinPetr Viktorin

63,8K9 Huy hiệu vàng80 Huy hiệu bạc80 Huy hiệu Đồng9 gold badges80 silver badges80 bronze badges

Điều này hoạt động trong 3.1.x:

from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
1

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

Đã trả lời ngày 16 tháng 11 năm 2011 lúc 7:32Nov 16, 2011 at 7:32

ifailifailiFail

891 Huy hiệu bạc1 Huy hiệu đồng1 silver badge1 bronze badge

Để hoàn thiện, tôi đang đăng một giải pháp sử dụng Heapq. Lưu ý, phương pháp này sẽ hoạt động cho cả giá trị số và không số lượng

from collections import defaultdict
d = defaultdict(int)
for w in text.split():
    d[w] += 1
2

Đã trả lời ngày 23 tháng 3 năm 2013 lúc 14:19Mar 23, 2013 at 14:19

AbhijitabhijitAbhijit

60.2K18 Huy hiệu vàng127 Huy hiệu bạc198 Huy hiệu đồng18 gold badges127 silver badges198 bronze badges

Làm thế nào để bạn sắp xếp một yếu tố từ điển?

Sử dụng hàm Sắp xếp () Hàm quan trọng mà bạn sẽ sử dụng để sắp xếp từ điển là hàm Sắp xếp () tích hợp. Hàm này lấy một điều đáng tin cậy làm đối số chính, với hai đối số chỉ từ khóa tùy chọn, một hàm khóa và giá trị boolean ngược. The critical function that you'll use to sort dictionaries is the built-in sorted() function. This function takes an iterable as the main argument, with two optional keyword-only arguments—a key function and a reverse Boolean value.

Chúng ta có thể sắp xếp 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.

Làm thế nào để bạn sắp xếp một từ điển bằng cách sắp xếp?

Sắp xếp từ điển bằng cách sử dụng hàm Sắp xếp () khi sắp xếp từ điển, chúng ta có thể chuyển thêm một đối số cho hàm Sắp xếp () như thế này: Sắp xếp (dict1, key = dict1. Nhận).Ở đây, khóa là một hàm được gọi trên mỗi phần tử trước khi các giá trị được so sánh để sắp xếp.sorted(dict1, key=dict1. get) . Here, key is a function that's called on each element before the values are compared for sorting.

Làm thế nào để tôi sắp xếp một từ điển trong Python?

Để 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ự.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.