我可以按键或值排序,但我需要它按值排序,然后键入一行。为了解释这个更好,我可以告诉你我的问题:按值排序字典然后键
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