Hướng dẫn python dict to sorted list - python dict đến danh sách đã sắp xếp

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ố
    import pprint
    
    l = [{'Name': 'Alice', 'Age': 40, 'Point': 80},
         {'Name': 'Bob', 'Age': 20},
         {'Name': 'Charlie', 'Age': 30, 'Point': 70}]
    
    1
  • Chỉ đị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
  • Sắp xếp theo nhiều phím
  • import pprint
    
    l = [{'Name': 'Alice', 'Age': 40, 'Point': 80},
         {'Name': 'Bob', 'Age': 20},
         {'Name': 'Charlie', 'Age': 30, 'Point': 70}]
    
    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ển

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}]
1

Chỉ đị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: '

Bài Viết Liên Quan

Chủ Đề