Python:元组列表

Python: List of tuples

如果我有元组列表,请说:

list = [('James', 27, 2000), ('Aaron', 24, 1290), ('Max', 23, 2300), ('Ben' , 27, 1900)]

  1. 如何按升序获取所有名称?

  2. 如何获得按名称升序显示元组的列表?

谢谢

如果对元组列表进行排序,默认情况下元组中的第一项作为键。因此:

list_ = [('James', 27, 2000), ('Aaron', 24, 1290), ('Max', 23, 2300), ('Ben', 27, 1900)]

for name, *_ in sorted(list_):
    print(name)

输出:

Aaron
Ben
James
Max

或者,如果您想要元组,则:

for t in sorted(list_):
    print(t)

...产生:

('Aaron', 24, 1290)
('Ben', 27, 1900)
('James', 27, 2000)
('Max', 23, 2300)

假设升序是指字母顺序? 您可以使用 sorted:

a = [('James', 27, 2000), ('Aaron', 24, 1290), ('Max', 23, 2300), ('Ben', 27, 1900)]
sorted(a, key=lambda x: x[0])

输出:

[('Aaron', 24, 1290),
 ('Ben', 27, 1900),
 ('James', 27, 2000),
 ('Max', 23, 2300)]
lst = [('James', 27, 2000), ('Aaron', 24, 1290), ('Max', 23, 2300), ('Ben', 27, 1900)]

print(sorted(lst))

版画

[('Aaron', 24, 1290), ('Ben', 27, 1900), ('James', 27, 2000), ('Max', 23, 2300)]
list = [('James', 27, 2000), ('Aaron', 24, 1290), ('Max', 23, 2300), ('Ben', 27, 1900)]
sorted_names = sorted([i[0] for i in list])
print(sorted_names)

输出:

['Aaron', 'Ben', 'James', 'Max']
sorted_by_name = sorted(list, key=lambda tup: tup[0])
print(sorted_by_name)

输出:

[('Aaron', 24, 1290), ('Ben', 27, 1900), ('James', 27, 2000), ('Max', 23, 2300)]
>>> l = [('James', 27, 2000), ('Aaron', 24, 1290), ('Max', 23, 2300), ('Ben', 27, 1900)]
>>> sorted([name for name, _, _ in l])
['Aaron', 'Ben', 'James', 'Max']
>>> sorted(l)
[('Aaron', 24, 1290), ('Ben', 27, 1900), ('James', 27, 2000), ('Max', 23, 2300)]

请注意 list 是 Python 中的一个对象,因此当您创建名称为 list 的变量时,您会覆盖该引用并且不能使用 list(something) 在你的程序之后。

您可以在 sortsorted 函数中使用 key 参数。这是一个例子:

my_list = [('James', 27, 2000), ('Aaron', 24, 1290), ('Max', 23, 2300), ('Ben', 27, 1900)]
my_list_sorted_by_names = sorted(my_list, key=lambda x: x[0])

结果将是:

[('Aaron', 24, 1290), ('Ben', 27, 1900), ('James', 27, 2000), ('Max', 23, 2300)]

您可以使用列表理解从排序列表中提取名称:

ordered_names = [i[0] for i in my_list_sorted_by_names]