Why json.keys() get keys in different order
本问题已经有最佳答案,请猛点这里访问。
嗨,我有以下python代码:
1 2 3 4 5 6 | import json jsonpost = json.loads('{"Player": {"_id":"3","firstName":"kim","surname":"jones"},"newTable": {"_id":"4","SurName":"abcd"}}') for key in jsonpost.keys(): for innerkey in jsonpost[key]: print innerkey |
我的问题是,当我打印出内部密钥时,jsonpost[‘player’]的密钥顺序如下:
1 | _id , surname, firstName |
号
python字典在内部使用哈希表实现。这意味着不保留键顺序。这是个问题吗?
无论是javascript的
字典中的键从来不是以相同的顺序排列的,如果您希望它们始终以相同的顺序排列,您可以这样做。
1 | sorted(jsonpost.keys()) |
字典排序被指定为未指定,您可以使用
python字典本身就是无序的,所以当您打印出来时,它们的键可能是无序的。
如果订单很重要,您可以使用
1 2 | import collections jsonpost = collections.OrderedDict(sorted(jsonpost.items())) |
号
或者,您可以改为for循环:
1 2 3 | for key in sorted(jsonpost.keys()): for innerkey in jsonpost[key]: print innerkey |