我如何按其中一个值然后另一个值对元组列表进行排序?

时间:2017-01-12 01:02:19

标签: python list python-3.x tuples

我会明白这一点,我有这个:

    ocurrencias = [('quiero', 1), ('aprender', 1), ('a', 1), ('programar', 1), ('en', 1), ('invierno', 2), ('hace', 1), ('frio', 1), ('este', 1)]

我想用元组的第二个值然后按字符串值对它进行排序,然后打印每个元素来得到它:

    output:invierno 2
           a 1
           aprender 1
           en 1
           este 1
           frio 1
           hace 1
           programar 1
           quiero 1

不知道我是否说得足够清楚,但我并不十分精通英语,请原谅我。

提前致谢

1 个答案:

答案 0 :(得分:7)

sorted与使用每个元组的反转版本的键一起使用,以降序排列第二个值,您可以在前面添加-来否定该值:

sorted(ocurrencias, key = lambda x: (-x[1], x[0]))
# [('invierno', 2), ('a', 1), ('aprender', 1), ('en', 1), ('este', 1), ('frio', 1), ('hace', 1), ('programar', 1), ('quiero', 1)]

正如@Jonathon所评论的那样,其工作原因是由于列表和元组比较按顺序发生,即比较第一个元素;如果不等于第二个元素,在python中查看更多关于object comparison的信息。