排序元组Python

Sea*_*ean 19 python sorting tuples

我的Blender python代码中有一个元组列表

scores=[(1489,"Sean"), (2850,"Bob"), (276,"Crap Player"), (78495, "Great Player"), (8473, "Damian"), (4860, "Andy"), (0, "Stephen")]
Run Code Online (Sandbox Code Playgroud)

我试图通过使用它来按照他们的分数对它们进行排序

sorted(scores, key=lambda score: score[0], reverse=True)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我不知道为什么.有小费吗?

我认为可能更好的实现是创建一个Score带字段name和的新类score

编辑:

谢谢大家的快速回复

它给了我没有错误的sorted方法,但没有排序.我使用了sort()它,它的工作原理.

我觉得python在Blender中可能有点怪异吗?

谢谢!

mou*_*uad 31

做就是了:

print sorted(scores, reverse=True)
[(78495, 'Great Player'), (8473, 'Damian'), (4860, 'Andy'), (2850, 'Bob'), (1489, 'Sean'), (276, 'Crap Player'), (0, 'Stephen')]
Run Code Online (Sandbox Code Playgroud)

你可以使用,scores.sort(reverse=True)如果你想在适当的位置排序,顺便说一下排序功能的方式默认情况下排序第一项,第二项...

  • 这也将按字母顺序对具有相同分数的玩家进行排序,这可能是期望的. (5认同)

Ign*_*ams 10

sorted()返回排序的序列.如果要对列表进行排序,请使用list.sort().