抱歉标题不好。我是编程新手,想不出更好的描述。
所以,我有这段代码:
umw = {'T':10, 'J':11, 'Q':12, 'K':13, 'A':14}
def card_ranks(ranks):
"Return a list of the ranks, sorted with higher first."
for i in ranks:
if i in umw:
index = ranks.index(i)
ranks[index] = str(umw[i])
ranks.sort(reverse = True)
return ranks
print(card_ranks(['A', '3', '4', 'K'])) #should output [14, 13, 4, 3]
这给了我以下结果:
['4', '3', '14', '13']
清除“reverse = True”会得到以下结果:
['13', '14', '3', '4']
如果我这样做:
r = card_ranks(['A', '3', '4', 'K'])
r[0] -> gives me '4'
but this doesnt work again:
print(sorted(r)) -> gives me ['4', '3', '14', '13'] all over again.
看来,.sort() 命令将 13 和 14 以及 3 和 4 视为一个单元。
有人能解释一下这是为什么吗?
非常感谢!
最佳答案
您正在按字典顺序对它们进行排序,作为字符串而不是数字。您可以先将它们转换为整数,或者您可以扩展您的 umw
字典:
umw = {str(i): i for i in range(2, 10)}
umw.update({'T':10, 'J':11, 'Q':12, 'K':13, 'A':14})
def card_ranks(ranks):
return sorted(ranks, key=umw.get, reverse=True)
card_ranks(['A', '3', '4', 'K'])
# ['A', 'K', '4', '3']
这使用了 dict.get
方法作为 key function在不更改排序值的情况下指导排序。
关于python - 使用字典和后续 .sort() 命令更正列表会显示错误的字符串顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48289874/