python中的dict是不能排序的,只有對dict的representation進行排序,例如list或者tuple
排序肯定會用到sorted函數,那么我們就來講一下sorted函數。
sorted
- sorted(iterable,key,reverse)
iterable:表示可迭代的對象,例如dict.keys(), dict.items()
key:是一個函數,用來選擇參與排序的元素
reverse:默認為False,從小到大排序,reverse=True,表示從大到小排序
按 key 排序
import operator
x = {1:2, 5:6, 3:4}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
# sorted_x = sorted(x.items(), key=operator.itemgetter(0), reverse=True)
itemgetter(0)表示取每項的第一個值,也就是鍵,來參與排序,默認是從小到大排序
結果 [(1, 2), (3, 4), (5, 6)]
按 value 排序
import operator
x = {1:2, 5:6, 3:4}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
itemgetter(1)表示取每項的值來排序
結果 [(1, 2), (3, 4), (5, 6)]
按 key 排序
def sortedDictValues1(adict):
items = adict.items()
items.sort()
return [value for key, value in items]
def sortedDictValues2(adict):
keys = adict.keys()
keys.sort()
return [dict[key] for key in keys]
def sortedDictValues3(adict):
keys = adict.keys()
keys.sort()
return map(adict.get, keys)
#一行語句搞定:
[(k,di[k]) for k in sorted(di.keys())]
按 value 排序
#還是一行搞定:
[ v for v in sorted(di.values())]