gpt4 book ai didi

python - 使用字典和后续 .sort() 命令更正列表会显示错误的字符串顺序

转载 作者:行者123 更新时间:2023-11-28 19:47:02 25 4
gpt4 key购买 nike

抱歉标题不好。我是编程新手,想不出更好的描述。

所以,我有这段代码:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com