Python:元组列表
Python: List of tuples
如果我有元组列表,请说:
list = [('James', 27, 2000), ('Aaron', 24, 1290), ('Max', 23, 2300), ('Ben' , 27, 1900)]
如何按升序获取所有名称?
如何获得按名称升序显示元组的列表?
谢谢
如果对元组列表进行排序,默认情况下元组中的第一项作为键。因此:
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)
在你的程序之后。
您可以在 sort
或 sorted
函数中使用 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]
如果我有元组列表,请说:
list = [('James', 27, 2000), ('Aaron', 24, 1290), ('Max', 23, 2300), ('Ben' , 27, 1900)]
如何按升序获取所有名称?
如何获得按名称升序显示元组的列表?
谢谢
如果对元组列表进行排序,默认情况下元组中的第一项作为键。因此:
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)
在你的程序之后。
您可以在 sort
或 sorted
函数中使用 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]