[Python]如何用两个变量排序字符串?

2 投票
5 回答
2836 浏览
提问于 2025-04-16 15:26

你好,我对Python还不是很熟悉,请多多包涵。

我的Python程序有以下几行代码:

print "玩家 1: " + str(player1points)

print "玩家 2: " + str(player2points)

print "玩家 3: " + str(player3points)

print "玩家 4: " + str(player4points)

这些玩家的分数是我程序计算出来的,所以每次运行时都会不同。

运行结果会是:

玩家 1: 3

玩家 2: 4

玩家 3: 3

玩家 4: 5

如果可以的话,我想把结果排序,先按分数从高到低排列,然后再按玩家的编号。如果有两个玩家的分数相同,那么编号小的玩家排在前面。

所以我希望我的结果能像这样:

玩家 4: 5

玩家 2: 4

玩家 1: 3

玩家 3: 3

任何帮助都非常感谢!!

5 个回答

0
sorted(values, key=lambda s: s.split(': ')[1], reverse=True)

这段代码的意思是……

首先,它会做一些初始化的工作,比如设置一些变量的初始值。接着,它会进入一个循环,这个循环会一直执行,直到满足某个条件为止。在循环内部,它会不断地检查一些状态,并根据这些状态来决定接下来要做什么。

如果在循环中遇到特定的情况,它可能会跳出循环,或者执行一些特定的操作。最后,当循环结束后,代码会继续执行后面的部分,完成整个程序的任务。

总的来说,这段代码的结构很常见,主要是通过循环和条件判断来控制程序的执行流程。

1

如果你已经有了玩家对象或者字典,你可以用下面的方式进行排序:

players.sort(key=lambda player: player.score, reverse=True)

如果没有的话,你可以处理你的数组,并在每个':'处进行分割。

示例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def main():
    "entry point"
    player_strings = ['Player 1:3', 'Player 2:4', 'Player 3:3', 'Player 4:5']
    players = []
    for player_string in player_strings:
        name, score = player_string.split(':')
        players.append({'name':name, 'score':score})
    players.sort(key=lambda player: int(player['score']), reverse=True)
    for player in players:
        print ('%s has a score of %s' % (player['name'], player['score']))

if __name__ == '__main__':
    main()

撰写回答