gpt4 book ai didi

元组的python排序列表

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:59 24 4
gpt4 key购买 nike

我正在尝试对元组列表进行排序。例如,如果

>>>recommendations = [('Gloria Pritchett', 2), ('Manny Delgado', 1), ('Cameron Tucker', 1), ('Luke Dunphy', 3)] 

我想得到

Luke Dunphy
Gloria Pritchett
Cameron Tucker
Manny Delgado

这是我做的:

这段代码只给我

>>> [('Luke Dunphy', 3), ('Gloria Pritchett', 2), ('Cameron Tucker', 1), ('Manny Delgado', 1)]

我不知道如何在 sorted_list 中仅附加名称(字符串)。请帮忙!

最佳答案

首先,听起来您想这样做:

给定一个 (name, score) 元组列表,返回一个名称列表从最高分到最低分。

是吗?我假设这就是问题。

与其深入研究您的代码(当我运行它时,它只返回一对(名称、分数),我将向您展示我是如何做到的。

首先在不同的步骤中:

recommendations = [
('Gloria Pritchett', 2),
('Manny Delgado', 1),
('Cameron Tucker', 1),
('Luke Dunphy', 3)]

rec2 = [(age, name) for name, age in recommendations]
print rec2
rec3 = sorted(rec2, reverse=True)
print rec3
rec4 = [name for age, name in rec3]
print rec4

这将打印:

[(2, 'Gloria Pritchett'), (1, 'Manny Delgado'), (1, 'Cameron Tucker'), (3, 'Luke Dunphy')]
[(3, 'Luke Dunphy'), (2, 'Gloria Pritchett'), (1, 'Manny Delgado'), (1, 'Cameron Tucker')]
['Luke Dunphy', 'Gloria Pritchett', 'Manny Delgado', 'Cameron Tucker']

这是您要找的吗?就我而言,“Manny”在“Cameron”之前排序(与您的预期答案不同),但如果他们得到相同的分数,我希望这对您来说无关紧要。 (如果是,请澄清你的问题)

像我这样的老 friend 可能会称之为 Schwartzian transform 的变体. (我想我在 Perl 中的根源正在显示......)

无论如何,这是它的工作原理:

rec2 是交换分数和名称的“列表理解”。

rec3 使用 Python 的内置功能对元组进行排序,但使用 reversed=True 进行从高到低的排序。

rec4 是另一种“列表推导式”,用于删除分数并返回名称。

如果必须,您可以将它们放在一个语句中:

class_rank = [name for age, name in sorted([(age, name) for name, age in recommendations], reverse=True)]
print class_rank

如果您愿意,欢迎您将其转换为函数。

干杯!

关于元组的python排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22775228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com