Python中的排序函数需要帮助

3
我的字典内容如下:-
>>> dict
{'6279': '45', '15752': '47', '5231': '30', '475': '40'}

我尝试在键上使用sort函数。 我发现sort函数不适用于键-15752。 请参见下文:

>>> [k for k in sorted(dict.keys())]
['15752', '475', '5231', '6279']

有人能指出一种方法让我解决这个问题吗?

谢谢


我的期望输出是:

['475', '5231', '6279', '15752']

1
你想要什么输出结果?你展示了键的排序。或者是它没有按照你想要的方式进行排序?你得到的是文本排序而不是数字排序? - g.d.d.c
Python只是按照你告诉它的去做。你调用sorted()的方式适用于字典键列表。由于键是字符串,因此'15752'出现在第一位('1'在'4'之前...)。 - GreenMatt
2
不要将你的字典命名为 dict。这会遮蔽 dict() - Felix Kling
我的错,关于将字典命名为dict。感谢您指出! 感谢GreenMatt的建议,我现在明白了。 - leba-lev
4个回答

10

哦,你想按数值而非字符串进行排序,因此你应该在某个时候将字符串转换为数字,使用int(s),或者直接使用sorted(dict.keys(), key=int)


1
sorted(dict, key=int)就足够了。 - user3850

3
如果它们全部都是整数,
sorted(dict, lambda x, y: cmp(int(x), int(y)))

2
你不应该在这个例子中使用cmp,而应该使用key。 - user3850

2
如果我在评论中的猜测是正确的,并且您想要按数字键排序,请将您的代码行更改为以下内容:
sorted([int(k) for k in test.keys()])
# returns [475, 5231, 6279, 15752]

1
如果你想进行数字排序,那么请将数字存储在字典中而不是字符串中,这样它就可以正常工作了。
>>> dict
{6279: '45', 15752: '47', 5231: '30', 475: '40'}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接