我正在整理元组列表。 例如,如果
>>>recommendations = [('Gloria Pritchett', 2), ('Manny Delgado', 1), ('Cameron Tucker', 1), ('Luke Dunphy', 3)]
我想得到
^{pr2}$我就是这么做的:
这个密码只给我
>>> [('Luke Dunphy', 3), ('Gloria Pritchett', 2), ('Cameron Tucker', 1), ('Manny Delgado', 1)]
我不知道如何在排序后的表中只附加名称(字符串)。请帮忙!在
首先,听起来你想这么做:
给定一个(name,score)元组列表,返回一个名称列表 从最高分到最低分。
对吗?我想这就是问题所在。在
我将向您展示我将如何做,而不是进入您的代码(当我运行它时,只返回其中一个(name,score)对。在
第一步是单独的步骤:
这将打印:
^{pr2}$这就是你要找的吗?在我的例子中,“曼尼”在“卡梅隆”之前得到了排序(不像你想要的答案),但是如果他们得到相同的分数,我希望这对你来说不重要。(如果有,请澄清您的问题)
像我这样的老前辈可能会把它称为Schwartzian transform的变体。(我想我在Perl中的根源正在显现…)
总之,它的工作原理如下:
rec2
是一个“列表理解”,分数和名称交换。在rec3
使用Python的内置功能对元组进行排序,但是使用reversed=True
可以从高到低排序。在rec4
是另一个“列表理解”来删除分数并返回名称。在如果你必须这样做,你可以把它放在一个声明中:
如果您愿意的话,欢迎您将此函数转换为函数。在
干杯!在
我在分类主题上的变体。我喜欢使用itemgetter:
您可以将密钥传入排序:
然后取名字:
^{pr2}$如果您注意到了,Manny Delgado和Cameron Tucker是根据他们的键(1)并列的,但是Manny Delgado在Cameron Tucker之前,因为python排序是到位的。但是,根据所需的输出,您希望使用辅助键(本例中的名称)来解析主键中的ties。您可以先按名称排序,然后按主整数键排序:
请注意,卡梅隆·塔克现在在曼尼·德尔加多之前。所有这些以及更多的细节都在优秀的Sorting Howto中详细介绍
相关问题 更多 >
编程相关推荐