Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按值和键排序_Python_Sorting_Dictionary - Fatal编程技术网

Python 按值和键排序

Python 按值和键排序,python,sorting,dictionary,Python,Sorting,Dictionary,我正在搜索一些东西,以便在Python中按值和键对成对列表进行排序。我发现: list.sort(key=lambda (k, v): (-v, k)) 这个lambda函数是如何工作的?它是按一对值对列表进行排序的。因为它对列表进行排序,所以没有任何键、值对,而是有两个以上的值彼此相邻。 它的写入方式是按第二个值反向排序,然后按正常升序按第一个值排序 这里演示了: l1 = [[2,2],[3,1],[1,2],[4,1]] l1.sort(key=lambda(k,v):(-v,k))

我正在搜索一些东西,以便在Python中按值和键对成对列表进行排序。我发现:

list.sort(key=lambda (k, v): (-v, k))

这个lambda函数是如何工作的?

它是按一对值对列表进行排序的。因为它对列表进行排序,所以没有任何键、值对,而是有两个以上的值彼此相邻。 它的写入方式是按第二个值反向排序,然后按正常升序按第一个值排序

这里演示了:

l1 = [[2,2],[3,1],[1,2],[4,1]]

l1.sort(key=lambda(k,v):(-v,k))

l1
=> [[1, 2], [2, 2], [3, 1], [4, 1]]

更正<代码>列表不包含
对中的值<代码>键:
对出现在字典中。下面是对值和键进行字典排序的代码:

>>> d = {'apple': 2, 'banana': 3, 'almond':2 , 'beetroot': 3, 'peach': 4}
>>> sorted(d.iteritems(), key=lambda(k, v): (-v, k))
[('peach', 4), ('banana', 3), ('beetroot', 3), ('almond', 2), ('apple', 2)]
说明:
d.iteritems()
返回一个对象。在
sorted(d.iteritems(),key=lambda(k,v):(-v,k))
中,
key=lambda(k,v):(-v,k)
表示排序将首先基于值的降序,即
-v
,然后基于键的升序,即
k


同样的逻辑也适用于问题中提到的列表排序代码。

那么您的疑问是什么,您做了什么来澄清这些疑问?例如,您是否尝试过在解释器中对其进行测试?您想按
对词典进行排序?我想按值对列表进行排序,然后按键对具有相同值的列表进行排序。我不明白的是-v,因为我尝试了这个方法,但没有-,而且在我看来,列表只按值排序。​​​​​​​​​​​​​​​我想OP需要的是一个解释,而不是演示。用解释更新答案。