对元组列表排序(Python)

对元组列表排序(Python),python,list,sorting,tuples,Python,List,Sorting,Tuples,我对Python非常陌生,对列表/元组的排序有疑问。我有一个元组列表(见代码),需要打印三个列表,分别是“城市vs值”。我已经能够使用特定的键来组织列表,但是现在我如何组织列表,然后仅使用每个元组中的特定元素来创建新列表?感谢您的帮助!谢谢 def getKey(item): return item[0] List = [('New York',54.9, 49.94, 2534.7), ('Los Angeles',65.4, 14.93, 3254.2), ('Chicago',49.8,

我对Python非常陌生,对列表/元组的排序有疑问。我有一个元组列表(见代码),需要打印三个列表,分别是“城市vs值”。我已经能够使用特定的键来组织列表,但是现在我如何组织列表,然后仅使用每个元组中的特定元素来创建新列表?感谢您的帮助!谢谢

def getKey(item):
return item[0]

List = [('New York',54.9, 49.94, 2534.7),
('Los Angeles',65.4, 14.93, 3254.2),
('Chicago',49.8, 36.89, 2508.4),
('Houston',69.9, 49.77, 2577.9),
('Philadelphia',55.9, 41.53, 2498.4),
('Phoenix',75.0,  8.03, 3871.6),
('San Antonio',69.4, 32.27, 2629.2),
('San Diego',63.6, 10.34, 3054.6),
('Dallas',67.1, 37.57, 2849.7),
('San Jose',60.5, 15.82, 3061.7),
('Austin',69.3, 34.32, 2643.7)]

print sorted(List, key=getKey)
使用:

交替使用:


您可以创建具有列表理解功能的新列表:

如果希望先对列表进行排序,则将列表替换为排序(List,key=getKey)


顺便说一下,您可能希望将值存储在namedtuple中,而不是普通的tuple中,以便更容易理解:

from collections import namedtuple
City = namedtuple('City', 'name lat long elev') # or whatever your actual fields are

cities = [City('New York', 54.9, 49.94, 2534.7),
          City('Los Angeles',65.4, 14.93, 3254.2),
          ...
]
那你就做吧

sorted(cities, key=lambda item: item.name)

namedtuple
的好处在于,您可以命名tuple的元素,而不必按索引引用它们。

您的问题是什么?期望值是多少?@taesu我想我已经很清楚了(对不起!)。我需要打印三个单独的列表,它们只是城市名称和另一个按顺序排列的值。
newlist = [(item[0], item[2]) for item in List]
from collections import namedtuple
City = namedtuple('City', 'name lat long elev') # or whatever your actual fields are

cities = [City('New York', 54.9, 49.94, 2534.7),
          City('Los Angeles',65.4, 14.93, 3254.2),
          ...
]
sorted(cities, key=lambda item: item.name)