我有一个 python 字典,如下所示,包含大约 20 个键:
a = { "1": "","2":"","3":""........"20":"" }
为了对字典进行排序,我正在执行以下操作:
for key in sorted(a.iterkeys()):
print key
然而,它似乎并没有保持键的顺序。它将产生以下输出:
1 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 .....
我在寻找类似的东西:
1 2 3 4 5 6 ....
我们将不胜感激
请您参考如下方法:
我假设您的真实字典如下所示:
a = {"1": "", "2": "", …, "20": ""}
否则,您一开始就不会遇到这个问题。
如果这是问题所在,答案是:
for key in sorted(a.iterkeys(), key=int):
print key
这里的技巧是 key争论。您可以将任何您想要的函数作为 key 传递。至 sorted (以及大多数其他与排序相关的函数),它将对所有值调用该函数并根据该函数的结果而不是实际值进行排序。
内置 int 函数接受任何参数并(如果可能)将其转换为整数。特别是,如果你给它字符串 "3"它会给你号码 3 , 如果你给它 "20" ,它会给你 20 .而且,虽然 "3" > "20" (因为字符串是按字母顺序比较的),3 < 20 (因为数字是按数字比较的)。
参见 Sorting HOWTO在文档中获取更多详细信息。
