我可以按鍵或值排序,但我需要它按值排序,然後鍵入一行。爲了解釋這個更好,我可以告訴你我的問題:按值排序字典然後鍵
dict = {'apple': 2, 'banana': 3, 'almond':2 , 'beetroot': 3, 'peach': 4}
我希望我的輸出被他們的價值降序排序,然後由他們的鍵(按字母順序排列)升序(A-Z)。造成這樣的列表:
隨着輸出:['peach', 'banana', 'beetroot', 'almond', 'apple']
的唯一途徑,我知道如何做到這一點至今是:
[v[0] for v in sorted(dict.items(), key=lambda(k,v): (v,k))]
隨着輸出:['almond', 'apple', 'banana', 'beetroot', 'peach']
所以它已經按照升序排列了這些值並按照升序排列了按鍵(AZ)。所以,如果我扭轉這一:
[v[0] for v in sorted(dict.items(), key=lambda(k,v): (v,k), reverse=True)]
隨着輸出:['peach', 'beetroot', 'banana', 'apple', 'almond']
它已按字母順序排序以降序(Z-A)以降序的值和密鑰。
有沒有一種方法,我可以降序排序值和按升序排列的鍵(即A-Z),並得到我上面顯示的輸出?
只是一個提醒了Python 3除去元組參數拆包,所以線之上現在應寫爲'[V [0],在排序(d.items()V,鍵=拉姆達KV :(-kv [1],kv [0]))]'。請參閱PEP 3113 https://www.python.org/dev/peps/pep-3113/ – 2016-08-07 23:13:53
關鍵函數也可以寫成'operator.itemgetter(1,0)'*如果您不必反轉鍵/值之一的排序。 – Moberg 2016-12-07 14:54:49