【问题标题】:how to sort a list of tuples by first element (string) alphabetically [PYTHON] [closed]如何按字母顺序按第一个元素(字符串)对元组列表进行排序[PYTHON] [关闭]
【发布时间】:2017-03-15 11:21:14
【问题描述】:

我有一个这样的元组列表:

[('peter':1), ('mary':5), ('anthony':6), ('brandon':4)]

如果我想对这个列表进行排序并得到类似的东西:

[('anthony':6),('brandon':4),('mary':5),('peter':1)]

如何在 python 中对其进行排序?

【问题讨论】:

  • 这不是元组列表……也不是有效的 Python。
  • 不,你没有。
  • 请不要试图“修复”OP的问题;据我们所知,鉴于他们在这里输入的内容,他们实际上可能有一本字典或其他东西。
  • @Mohsin 请修复问题代码中的语法错误,或进行任何更改发布代码含义的编辑。它可能只是一个错字,但它可能是 OP 问题的一个重要因素。在 SO 上,我们不会编辑人们的问题,而是尝试在 cmets 中澄清它们。
  • @py_9 请不要将[SOLVED] 放入问题标题中。如果以下答案之一解决了您的问题,您应该接受它(单击相应答案旁边的复选标记)。这有两件事。它让每个人都知道您的问题已得到您满意的解决,并为帮助您的人提供帮助。有关完整说明,请参阅here

标签: python python-2.7 sorting tuples


【解决方案1】:

正如 Zero 指出的那样,您的示例数据无效,但我认为这只是一个打字问题。所以提供的数据 有效的,看起来像:

my_data = [('peter',1), ('mary',5), ('anthony',6), ('brandon',4)]

你可以使用任何一个

sorted_data = sorted(my_data)

或:

my_data.sort()

【讨论】:

  • 假设 OP 有一个实际的元组列表,key 参数是不必要的。 sorted() 默认按字典顺序排序。
【解决方案2】:

我想你的意思是这样的:

z = [('peter',1), ('mary',5), ('anthony',6), ('brandon',4)]

你可以试试:

from operator import itemgetter
sorted(z, key = itemgetter(0))

或者:

sorted(z, key = lambda x: x[0])

或者:

z.sort(key = lambda x: x[0])

如果您指的是如下所示的字典:

z1 = {'peter':1, 'mary':5, 'anthony':6, 'brandon':4}

字典本质上是无序的,排序字典没有意义。我们使用键来引用字典元素,因此顺序无关紧要。

您可以参考http://sthurlow.com/python/lesson06/ 了解列表、元组和字典之间的内在差异。

【讨论】:

    【解决方案3】:

    要对您的列表进行适当的排序,只需sort()它:

    >>> lst = [('peter',1), ('mary',5), ('anthony',6), ('brandon',4)]
    >>> lst.sort()
    >>> lst
    [('anthony', 6), ('brandon', 4), ('mary', 5), ('peter', 1)]
    

    它将按元组的第一个元素(名称)对元组进行排序。如果两个名称相同,它们将按它们的第二个元素(id)排序。见"Lexicographical order"

    如果你有一个dict,你可以通过这种方式得到一个排序的元组列表:

    >>> dct = {'peter': 1, 'mary': 5, 'anthony':6, 'brandon':4}
    >>> sorted(dct.items())
    [('anthony', 6), ('brandon', 4), ('mary', 5), ('peter', 1)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 2013-10-04
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多