2010-08-03 51 views
2

我的字典里的内容是像这样: -需要与排序功能帮助蟒蛇

>>> dict 
{'6279': '45', '15752': '47', '5231': '30', '475': '40'} 

我尝试使用按键上的排序功能。我注意到,排序功能不会对重点工作 - 15752.请在下面找到: -

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

有人能指出我的工作办法解决?

感谢


我预期的输出结果是: -

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

你想要的输出是什么?你已经演示了键的排序是全部。还是它不按你喜欢的方式排序?你得到的文本排序不是数字排序? – 2010-08-03 22:05:03

+0

Python只是在做你已经告诉它做的事情。您称为sorted()的方式适用于字典键列表。由于键是字符串,因此'15752'首先出现('1'在'4'之前...)。 – GreenMatt 2010-08-03 22:08:52

+2

不要命名你的字典'字典'。你正在屏蔽'dict()'。 – 2010-08-03 22:10:24

回答

10

啊,你想要的数值不是字符串进行排序,所以你应该琴弦使用int(s)数字转换在一些点之前或刚使用sorted(dict.keys(), key=int)

+2

+1 – 2010-08-03 22:11:35

+1

sorted(dict,key = int)就足够了 – hop 2010-08-03 22:14:34

2

如果我在我的评论的猜测是正确的,你想要的数字键进行排序改变你的代码行这样:

sorted([int(k) for k in test.keys()]) 
# returns [475, 5231, 6279, 15752] 
2

如果它们是全部整数,

sorted(dict, lambda x, y: cmp(int(x), int(y))) 
+2

你不应该在这个例子中使用cmp,对于'key = int'使用键 – hop 2010-08-03 22:13:33

1

如果您想通过数字来进行排序,然后在商店数量的dictionary not strings then then just will work

>>> dict 
{6279: '45', 15752: '47', 5231: '30', 475: '40'}