我有一个像这样的元组列表:
[('peter':1), ('mary':5), ('anthony':6), ('brandon':4)]
如果我想对此列表进行排序并得到类似的内容:
[('anthony':6),('brandon':4),('mary':5),('peter':1)]
我怎么能在python中对它进行排序?
答案 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/列表,元组和字典之间的固有差异。