Các phím của Dict, được phân loại đảo ngược bởi các giá trị tương ứng, tốt nhất có thể được nhận là
sorted[adict, key=adict.get, reverse=True]
Vì bạn muốn các cặp khóa/giá trị, bạn có thể làm việc trên các mục như tất cả các câu trả lời khác đề xuất, hoặc [để sử dụng phương thức ràng buộc
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' '[[k, adict[k]] for k in sorted[adict, key=adict.get, reverse=True]]'
100000 loops, best of 3: 10.8 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]; from operator import itemgetter' 'sorted[adict.iteritems[], key=itemgetter[1], reverse=True]'
100000 loops, best of 3: 9.66 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' 'sorted[adict.iteritems[], key=lambda [k,v]: v, reverse=True]'
100000 loops, best of 3: 11.5 usec per loop
2 tiện lợi thay vì các mục tiêu hoặc Lambdas kỳ lạ ;-],[[k, adict[k]] for k in sorted[adict, key=adict.get, reverse=True]]
Chỉnh sửa: Về mặt hiệu suất, dù sao cũng không có nhiều điều:: in terms of performance, there isn't much into it either way:
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' '[[k, adict[k]] for k in sorted[adict, key=adict.get, reverse=True]]'
100000 loops, best of 3: 10.8 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]; from operator import itemgetter' 'sorted[adict.iteritems[], key=itemgetter[1], reverse=True]'
100000 loops, best of 3: 9.66 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' 'sorted[adict.iteritems[], key=lambda [k,v]: v, reverse=True]'
100000 loops, best of 3: 11.5 usec per loop
Vì vậy, giải pháp dựa trên ____ 23 có hiệu suất giữa hai loại dựa trên ____ 24-chậm hơn một chút so với
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' '[[k, adict[k]] for k in sorted[adict, key=adict.get, reverse=True]]'
100000 loops, best of 3: 10.8 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]; from operator import itemgetter' 'sorted[adict.iteritems[], key=itemgetter[1], reverse=True]'
100000 loops, best of 3: 9.66 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' 'sorted[adict.iteritems[], key=lambda [k,v]: v, reverse=True]'
100000 loops, best of 3: 11.5 usec per loop
5, nhanh hơn một chút so với $ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' '[[k, adict[k]] for k in sorted[adict, key=adict.get, reverse=True]]'
100000 loops, best of 3: 10.8 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]; from operator import itemgetter' 'sorted[adict.iteritems[], key=itemgetter[1], reverse=True]'
100000 loops, best of 3: 9.66 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' 'sorted[adict.iteritems[], key=lambda [k,v]: v, reverse=True]'
100000 loops, best of 3: 11.5 usec per loop
6. Trong các trường hợp "tắc nghẽn", trong đó các phân số micro giây đó rất quan trọng đối với bạn, bằng mọi cách đều tập trung vào điều đó. Trong các trường hợp bình thường, trong đó hoạt động này chỉ là một bước trong một số nhiệm vụ lớn hơn và ít nhiều quan trọng hơn hoặc ít hơn, tập trung vào sự đơn giản của thành ngữ ____27, tuy nhiên, cũng là một sự thay thế hợp lý. Trong Python, việc sắp xếp một danh sách các từ điển với phương thức
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' '[[k, adict[k]] for k in sorted[adict, key=adict.get, reverse=True]]'
100000 loops, best of 3: 10.8 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]; from operator import itemgetter' 'sorted[adict.iteritems[], key=itemgetter[1], reverse=True]'
100000 loops, best of 3: 9.66 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' 'sorted[adict.iteritems[], key=lambda [k,v]: v, reverse=True]'
100000 loops, best of 3: 11.5 usec per loop
8 hoặc hàm $ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' '[[k, adict[k]] for k in sorted[adict, key=adict.get, reverse=True]]'
100000 loops, best of 3: 10.8 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]; from operator import itemgetter' 'sorted[adict.iteritems[], key=itemgetter[1], reverse=True]'
100000 loops, best of 3: 9.66 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' 'sorted[adict.iteritems[], key=lambda [k,v]: v, reverse=True]'
100000 loops, best of 3: 11.5 usec per loop
9 làm tăng lỗi import pprint
l = [{'Name': 'Alice', 'Age': 40, 'Point': 80},
{'Name': 'Bob', 'Age': 20},
{'Name': 'Charlie', 'Age': 30, 'Point': 70}]
0 theo mặc định.Bằng cách chỉ định tham số
import pprint
l = [{'Name': 'Alice', 'Age': 40, 'Point': 80},
{'Name': 'Bob', 'Age': 20},
{'Name': 'Charlie', 'Age': 30, 'Point': 70}]
1 của $ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' '[[k, adict[k]] for k in sorted[adict, key=adict.get, reverse=True]]'
100000 loops, best of 3: 10.8 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]; from operator import itemgetter' 'sorted[adict.iteritems[], key=itemgetter[1], reverse=True]'
100000 loops, best of 3: 9.66 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' 'sorted[adict.iteritems[], key=lambda [k,v]: v, reverse=True]'
100000 loops, best of 3: 11.5 usec per loop
8 hoặc $ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' '[[k, adict[k]] for k in sorted[adict, key=adict.get, reverse=True]]'
100000 loops, best of 3: 10.8 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]; from operator import itemgetter' 'sorted[adict.iteritems[], key=itemgetter[1], reverse=True]'
100000 loops, best of 3: 9.66 usec per loop
$ python -mtimeit -s'adict=dict[[x,x**2] for x in range[-5,6]]' 'sorted[adict.iteritems[], key=lambda [k,v]: v, reverse=True]'
100000 loops, best of 3: 11.5 usec per loop
9, 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.
- Sắp xếp danh sách các từ điển làm tăng lỗi theo mặc định
- Chỉ định biểu thức Lambda cho tham số
1import pprint l = [{'Name': 'Alice', 'Age': 40, 'Point': 80}, {'Name': 'Bob', 'Age': 20}, {'Name': 'Charlie', 'Age': 30, 'Point': 70}]
- Chỉ định
5 cho tham sốimport pprint l = [{'Name': 'Alice', 'Age': 40, 'Point': 80}, {'Name': 'Bob', 'Age': 20}, {'Name': 'Charlie', 'Age': 30, 'Point': 70}]
1import pprint l = [{'Name': 'Alice', 'Age': 40, 'Point': 80}, {'Name': 'Bob', 'Age': 20}, {'Name': 'Charlie', 'Age': 30, 'Point': 70}]
- Sắp xếp theo nhiều phím
7,import pprint l = [{'Name': 'Alice', 'Age': 40, 'Point': 80}, {'Name': 'Bob', 'Age': 20}, {'Name': 'Charlie', 'Age': 30, 'Point': 70}]
8 cho một danh sách từ điểnimport pprint l = [{'Name': 'Alice', 'Age': 40, 'Point': 80}, {'Name': 'Bob', 'Age': 20}, {'Name': 'Charlie', 'Age': 30, 'Point': 70}]
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
import pprint
l = [{'Name': 'Alice', 'Age': 40, 'Point': 80},
{'Name': 'Bob', 'Age': 20},
{'Name': 'Charlie', 'Age': 30, 'Point': 70}]
Sắp xếp danh sách các từ điển làm tăng lỗi theo mặc định
Chỉ định biểu thức Lambda cho tham số
import pprint
l = [{'Name': 'Alice', 'Age': 40, 'Point': 80},
{'Name': 'Bob', 'Age': 20},
{'Name': 'Charlie', 'Age': 30, 'Point': 70}]
1Chỉ định
import pprint
l = [{'Name': 'Alice', 'Age': 40, 'Point': 80},
{'Name': 'Bob', 'Age': 20},
{'Name': 'Charlie', 'Age': 30, 'Point': 70}]
5 cho tham số import pprint
l = [{'Name': 'Alice', 'Age': 40, 'Point': 80},
{'Name': 'Bob', 'Age': 20},
{'Name': 'Charlie', 'Age': 30, 'Point': 70}]
1# sorted[l]
# TypeError: '