users = [
{'name':'jack','age':25,'height':180},
{'name':'amor','age':23,'height':177},
{'name':'niko','age':45,'height':169},
{'name':'lops','age':20,'height':168},
{'name':'fdop','age':33,'height':189},
{'name':'bon','age':22,'height':168},
{'name':'rom','age':26,'height':166},
{'name':'gogo','age':18,'height':177},
]
sort_by_age = sorted(users,key=lambda x:x['age'])
print(sort_by_age)
[{'name': 'gogo', 'age': 18, 'height': 177},
{'name': 'lops', 'age': 20, 'height': 168},
{'name': 'bon', 'age': 22, 'height': 168},
{'name': 'amor', 'age': 23, 'height': 177},
{'name': 'jack', 'age': 25, 'height': 180},
{'name': 'rom', 'age': 26, 'height': 166},
{'name': 'fdop', 'age': 33, 'height': 189},
{'name': 'niko', 'age': 45, 'height': 169}]
operator
模块中的itemgetter
itemgetter()
通常要比lambda
要快一些
from operator import itemgetter
sort_by_age = sorted(users,key=itemgetter('age'))
by_height_age = sorted(users,key=itemgetter('height','age'))
print(by_height_age)
[{'name': 'rom', 'age': 26, 'height': 166},
{'name': 'lops', 'age': 20, 'height': 168},
{'name': 'bon', 'age': 22, 'height': 168},
{'name': 'niko', 'age': 45, 'height': 169},
{'name': 'gogo', 'age': 18, 'height': 177},
{'name': 'amor', 'age': 23, 'height': 177},
{'name': 'jack', 'age': 25, 'height': 180},
{'name': 'fdop', 'age': 33, 'height': 189}]
max(users,key=itemgetter('age'))
heapq
模块中的nlargest
和nsmallest
from heapq import nlargest,nsmallest
from operator import itemgetter
nums = [21,1,546,6,269,236,344,56,3]
print(nlargest(3,nums))
print(nsmallest(3,nums))
[546, 344, 269]
[1, 3, 6]
sort_age = nlargest(3,users, key=itemgetter('age'))
print(sort_age)
sort_height = nsmallest(3, users, key=itemgetter('height'))
print(sort_height)
[{'name': 'niko', 'age': 45, 'height': 169},
{'name': 'fdop', 'age': 33, 'height': 189},
{'name': 'rom', 'age': 26, 'height': 166}]
[{'name': 'rom', 'age': 26, 'height': 166},
{'name': 'lops', 'age': 20, 'height': 168},
{'name': 'bon', 'age': 22, 'height': 168}]