Python 如何将变量分配给要排序的数字
我刚刚了解了Python中的排序选项,并一直在尝试将其用于排序变量。有没有办法给它们一个像数字一样的值来进行排序Python 如何将变量分配给要排序的数字,python,Python,我刚刚了解了Python中的排序选项,并一直在尝试将其用于排序变量。有没有办法给它们一个像数字一样的值来进行排序 b1 = "bronze 1" b2 = "bronze 2" b3 = "bronze 3" s1 = "silver 1" s2 = "silver 2" s3 = "silver 3" g1 = "gold 1" g2 = "go
b1 = "bronze 1"
b2 = "bronze 2"
b3 = "bronze 3"
s1 = "silver 1"
s2 = "silver 2"
s3 = "silver 3"
g1 = "gold 1"
g2 = "gold 2"
g3 = "gold 3"
# they are in order above
print(sorted({b2, b3, b1, s1, s2, s3, g1, g2, g3}))
我想让它告诉我哪些级别是有序的。如何执行此操作?您可以将位置参数
键
传递给sorted()
函数以进行自定义排序
>>未排序=['bronze 2'、'gold 1'、'gold 2'、'bronze 1'、'silver 2'、'silver 1'、'gold 3'、'silver 3'、'bronze 3']
>>>def排序列表(\u列表):
已排序的_列表=[]
排序键=lambda s:int(s[-1])
对于[“青铜”、“银”、“金”]中的字符串:
sublist=[i表示i中的i,如果i中有字符串,则为_列表中的i]
扩展(已排序(子列表,键=排序键))
返回已排序的列表
>>>排序列表(未排序)
[‘青铜1’、‘青铜2’、‘青铜3’、‘银1’、‘银2’、‘银3’、‘金1’、‘金2’、‘金3’]
如果需要,可以使用列表理解来简化:
>>>定义排序列表(\u列表):
已排序的_列表=[]
对于[“青铜”、“银”、“金”]中的字符串:
已排序的\u list.extend(
已排序([i表示i中的i,如果i中的字符串为i],key=lambda s:int(s[-1]))
)
返回已排序的列表
>>>排序列表(未排序)
[‘青铜1’、‘青铜2’、‘青铜3’、‘银1’、‘银2’、‘银3’、‘金1’、‘金2’、‘金3’]
您希望该程序的输出结果是什么?铜牌1、铜牌2、铜牌3、银牌1、银牌2、银牌3、金牌1、金牌2、金牌3谢谢回答您的问题吗?在你的例子中,ORDER=[b1,b2,b3,s1,s2,s3,g1,g2,g3]
当使用中的解决方案时。最好是一个字符串吗?对于这个愚蠢的问题,sry,但我如何判断它是否有效?@Pricysquirrl通过将你得到的输出与你想要的nvm的输出进行比较,它有效tysry 1最后一件事。当打印排序列表(未排序)时,我会在输出周围加上方括号。如何摆脱这些问题如果您希望遍历列表并打印每个项目,您可以使用for
循环:for I in sort\u list(unsorted):
,然后在下一个块上,print(I)
。