【问题标题】:how to sort tuple in python? [duplicate]如何在python中对元组进行排序? [复制]
【发布时间】:2011-12-03 17:43:59
【问题描述】:

可能重复:
Sorting a tuple that contains tuples

我在对包含数字和字符串的元组进行排序时遇到了一些问题。 一开始,我有一个这样的元组:

a=(("a",2),("b",2),("a",1))

那么我该如何将其排序为:(先按数字,然后按字母顺序)

a=(("a",1),("a",2),("b",2))

非常感谢您的帮助!

【问题讨论】:

  • 是的,我同意,这似乎是一个完全的骗局。
  • 绝对是重复的。伙计,这是 Google 中“排序元组”的前 5 个条目。

标签: python sorting tuples


【解决方案1】:
>>> a=(("a",2),("b",2),("a",1))
>>> from operator import itemgetter
>>> sorted(a, key=itemgetter(1, 0))
[('a', 1), ('a', 2), ('b', 2)]

【讨论】:

  • 您知道您可以使用itemgetter(1, 0) 一次获取两个项目吗?无需拨打sorted 两次。
  • 不,不知道那个。谢谢你。
  • 值得一提的是,这会返回一个列表,而问题特别需要一个元组作为输出。有时这很重要。
【解决方案2】:

元组不能按定义排序,因为它们是不可变的。您可以将其转换为列表,对列表进行排序,然后再转换回元组。像这样的,

mylist = sorted(a, key = lambda x: str(x[1])+str(x[0]))
a = tuple(mylist)

【讨论】:

  • Sorted 自动将其转换为列表。不需要先做 list(a)。
  • 不知道,但以后会记住的。谢谢!
【解决方案3】:

内置函数sorted 将为您完成这项工作。

【讨论】:

    猜你喜欢
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    相关资源
    最近更新 更多