我有一个元组列表.我想根据两个元素对它们进行排序.以下是示例
unsorted = [('a', 4, 2), ('a', 4, 3), ('a', 7, 2), ('a', 7, 3), ('b', 4, 2), ('b', 4, 3), ('b', 7, 2), ('b', 7, 3)]
sorted = [('a', 4, 2), ('b', 4, 2), ('a', 4, 3), ('b', 4, 3), ('a', 7, 2), ('b', 7, 2), ('a', 7, 3), ('b', 7, 3)]
Run Code Online (Sandbox Code Playgroud)
我知道如何在第二个元素上对它们进行排序:
sorted(unsorted, key = lambda element : element[1])
Run Code Online (Sandbox Code Playgroud)
但如何用两把钥匙做到这一点?
我有三个不同的列表.我想基于List2对List1进行排序(按升序排序).但是,我在List2中重复了一遍.然后我想按List3对这些重复进行排序(按降序排列).足够困惑?
是)我有的:
List1 = ['a', 'b', 'c', 'd', 'e']
List2 = [4, 2, 3, 2, 4]
List3 = [0.1, 0.8, 0.3, 0.6, 0.4]
Run Code Online (Sandbox Code Playgroud)
我想要的是:
new_List1 = ['b', 'd', 'c', 'e', 'a']
Run Code Online (Sandbox Code Playgroud)
'b'出现在'd'之前,因为0.8> 0.6.'e'出现在'a'之前,因为0.4> 0.1.
有帮助吗?
谢谢!
我想知道用两个键对元组列表进行排序的Pythonic方法是什么,其中用一个(并且只有一个)键进行排序将是相反的顺序,而用另一个键进行排序将不区分大小写.更具体地说,我有一个包含元组的列表:
myList = [(ele1A, ele2A),(ele1B, ele2B),(ele1C, ele2C)]
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码用两个键对其进行排序:
sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]))
Run Code Online (Sandbox Code Playgroud)
要按相反顺序排序,我可以使用
sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]), reverse = True)
Run Code Online (Sandbox Code Playgroud)
但这会按两个键的相反顺序排序.
任何提示都非常感谢.
这是这种情况,我有一个列表:
[(1, a), (1, b), (5, c)]
我想对列表进行排序,以便它首先取决于降序的数字,然后是升序的字符。
我试过:
sorted(theList, key = lambda x:(x[0], x[1]), reverse = True)
Run Code Online (Sandbox Code Playgroud)
但是结果在两个键中都是按降序排列的。显然,反向只采用一个变量,我在网上搜索并找不到解决方案。请帮忙!谢谢!