我可以按键或值排序,但我需要按值排序,然后按键在同一行中进行排序。为了更好地解释这个问题,我可以向您展示我的问题:
dict = {'apple': 2, 'banana': 3, 'almond':2 , 'beetroot': 3, 'peach': 4}
我希望我的输出按照值的降序和键的升序(按字母表顺序)排序。这样会得到这样一个列表:
对于输出: ['peach', 'banana', 'beetroot', 'almond', 'apple']
目前我所知道的唯一方法是:
[v[0] for v in sorted(dict.items(), key=lambda(k,v): (v,k))]
输出结果为:['almond', 'apple', 'banana', 'beetroot', 'peach']
因此,它按升序对值进行了排序,并按字母顺序(A-Z)对键进行了排序。所以如果我反转它:
[v[0] for v in sorted(dict.items(), key=lambda(k,v): (v,k), reverse=True)]
使用以下代码可以实现将字典中的值按降序排列,同时将键以升序排列:
d = {'peach': 1, 'beetroot': 2, 'banana': 3, 'apple': 4, 'almond': 5}
result = [k for k, v in sorted(d.items(), key=lambda item: (-item[1], item[0]))]
输出结果为:['almond', 'apple', 'banana', 'beetroot', 'peach']
[v[0] for v in sorted(d.items(), key=lambda kv: (-kv[1], kv[0]))]
。详见 PEP 3113 https://www.python.org/dev/peps/pep-3113/。 - Gui Ambrosoperator.itemgetter(1, 0)
。 - Moberg