如何按字母顺序排列第一个元素(字符串)的元组列表[PYTHON]

时间:2017-03-15 11:21:14

标签: python python-2.7 sorting tuples

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

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

如果我想对此列表进行排序并得到类似的内容:

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

我怎么能在python中对它进行排序?

3 个答案:

答案 0 :(得分:6)

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

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

您可以使用

sorted_data = sorted(my_data)

或:

my_data.sort()

答案 1 :(得分: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)]

答案 2 :(得分:0)

我想你的意思是这样说:

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/列表,元组和字典之间的固有差异。