Python JSON只能从Angular js传递的相同顺序获取第一级的键

时间:2017-02-06 11:59:55

标签: python angularjs

如何以与从角度js传递的顺序相同的顺序获取JSON中第一级的键?让我们举个例子。

my_dict = {
            'key1': {...},
            'key2': {...},
            'key3': {...}
          }

现在当我在python中获取第一级键时,它并没有按照与传递的顺序相同的顺序给我。但出于某种原因,我想以与传递的顺序相同的顺序获取它。

for item in my_dict:
     print item

这给出了明显的结果。

key3
key2
key1

Q1 - 为什么python改变它的顺序?

Q2 - 出于某种原因,我希望它与['key1','key2','key3']一样。我该如何获取它?

我在互联网上尝试了很多东西但没有得到解决方案。 Downvoters给出了原因,所以我可以改进我的问题。

2 个答案:

答案 0 :(得分:0)

因为python的dicts是哈希表。散列表的本质是它们不保持初始排序。查看此link了解详情。

为了使您的词典按一定顺序排列,请考虑使用OrderedDict

来自python docs的示例:

>>> # regular unsorted dictionary
>>> d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}

>>> # dictionary sorted by key
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])

答案 1 :(得分:0)

Dictionary是一个键值映射。它不保证order。使用OrderedDict