标题有点误导,但我无法在一行中形容它。
我有一个看起来像这样的列表。
a = [(4, 2), (4, 3), (2, 1), (1, 0), (1, 4)]
列表已经使用此代码按元组的第一项排序。
a.sort( key = lambda x: x[0], reverse = True )
(我只是说列表已经排序,所以没有必要排序)
假设元组的第一个词是扑克玩家的得分,第二个词是每个扑克玩家的名字。因此,上面的列表与此相同:
[(得分= 4,玩家2),(得分= 4,玩家3),(得分= 2,玩家1),(得分= 1,玩家0),(得分= 1,玩家= 4)]
有5名玩家,每个玩家的得分可能相同或不同。
我想根据他们的分数评估玩家,并希望在关系情况下打印结果(当时。所以,
Player 2 ties
Player 3 ties
Player 0 ties
Player 4 ties
球员2和3的得分相同(得分= 4)并且他们并列。另外,球员0和4有关系,但由于他们的得分(得分= 1)低于玩家2和3,他们被打印在玩家2和3下面。
我怎样才能在Python中执行此操作?
答案 0 :(得分:2)
这是为itertools.groupby
量身定制的问题:
>>> from itertools import groupby
>>> from operator import itemgetter
>>> L = [(4, 2), (4, 3), (2, 1), (1, 0), (1, 4)]
>>> for key, group in groupby(L, itemgetter(0)):
... group = list(group)
... if len(group) > 1:
... for k, player in group:
... assert k == key
... print(f'Player {player} ties')
... print()
...
Player 2 ties
Player 3 ties
Player 0 ties
Player 4 ties