Cod*_*ice 0 python sorting tuples
我正在尝试对元组列表进行排序(如果您必须知道,则为字典中的项目)。第一个元素是小写字母,第二个元素是整数。我想按第二个元素降序排序。为了打破平局,我将使用第一个元素的字母顺序。到目前为止我已经
sorted_c = sorted(c.items(), key=operator.itemgetter(1), reverse=True)
Run Code Online (Sandbox Code Playgroud)
这按我想要的每个元组的第二个元素排序。我该如何调整这个来打破联系?
输入示例:
[ ('b', 5), ('c', 10),('a', 27), ('a', 5) ]
Run Code Online (Sandbox Code Playgroud)
预期输出:
[('a', 27), ('c', 10), ('a', 5), ('b', 5) ]
Run Code Online (Sandbox Code Playgroud)
为了对元组列表进行排序,您可以使用lambda 表达式作为排序函数的键,如下所示:
>>> my_list = [('a', 7), ('c', 10), ('b', 5), ('a', 5) ]
>>> sorted(my_list, key=lambda x: (-x[1], x[0]))
[('c', 10), ('a', 7), ('a', 5), ('b', 5)]
Run Code Online (Sandbox Code Playgroud)
解释:
lambda x: (-x[1], x[0])
# ^ ^ sort in ascending order for value at `0`th index
# ^ sort in descending order for value at `1`st index
Run Code Online (Sandbox Code Playgroud)
要将元组转换dict为元组列表,您需要调用dict.items()为:
>>> my_dict = {'a': 5, 'c': 10, 'b': 5}
>>> my_dict.items()
[('a', 5), ('c', 10), ('b', 5)]
Run Code Online (Sandbox Code Playgroud)