根据python中的其他元素对列表进行排序

2024-10-02 08:30:27 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个包含以下结构元素的列表:

[team1, points1, playedgames1, team2, points2, playedgames2, team3, points3, playedgames3]

等等。一个例子(有3个小组):

^{pr2}$

希望它看起来像这样:

["Inter", 3, 2, "Juventus", 5, 2, "Milan", 6, 2]

等等,更多的队伍。如您所见,列表现在排序在最低点之后。基本上,现在是:

["team2, points2, playedgames2, team3, points3, playedgames3, team1, points2, playedgames2]

因为点2的值最小。所以,我可以像这样对列表进行排序,根据分数,但也要保持列表的结构(团队、点数、玩过的游戏)等等。这可能吗?在

元素从文本文件中检索。在


Tags: 元素列表排序小组结构例子team1team2
3条回答

我建议您将记录从文件转换为元组列表。 之后,您可以通过以下简单方法解决您的问题:

ls.sort(key=operator.itemgetter(0))

也可以创建函数:

^{pr2}$

而且,operator.itemgetter工作速度更快。在

In [17]: %%timeit
sorted(a, key=operator.itemgetter(0))

10000 loops, best of 3: 114 µs per loop

In [18]: %%timeit
sorted(a, key=lambda x: x[0])

10000 loops, best of 3: 210 µs per loop

import operator

L = (team1, points1, playedgames1, team2, points2, playedgames2, team3, points3, playedgames3)
L = [tuple(L[i:i+3]) for i in range(None, len(L), 3)]
answer = sorted(L, key=operator.itemgetter(2))

有一种方法:

ls = ["Milan", 6, 2, "Inter", 3, 2, "Juventus", 5, 2]
>>> sorted([ls[i:i+3] for i in range(0,len(ls),3)], key=lambda x:x[1])
[['Inter', 3, 2], ['Juventus', 5, 2], ['Milan', 6, 2]]

相关问题 更多 >

    热门问题