有時候會需要依據dict value來排序,嗯,就是會有這種時候(´・_・`)
話說我看了官方文件才發現,從Python 3.6開始依據PEP 468將保留**kwargs的順序,所以現在dict也是有序的呢(插入元素的順序),而我開始學習Python的時候是3.5版。
假設有個dict長這樣:
python
my_friend = {
'Mike':{'gender':'male', 'age':25},
'Emily':{'gender':'female', 'age':23},
'John':{'gender':'male', 'age':30},
'Ted':{'gender':'male', 'age':26},
'Alice':{'gender':'female', 'age':29}
}
如果想依據'age'來排序? 利用lambda將sort key指定為dict value中的某個值來排序dict.items():
python
>>> sort_my_friend = sorted(my_friend.items(), key=lambda x:x[1]['age'])
>>> sort_my_friend
[('Emily', {'gender': 'female', 'age': 23}), ('Mike', {'gender': 'male', 'age': 25}), ('Ted', {'gender': 'male', 'age': 26}), ('Alice', {'gender': 'female', 'age': 29}), ('John', {'gender': 'male', 'age': 30})]