2013-10-30 78 views
0

的时候,当我通过Django的:维持秩序转换列表中的自定义词典

tests = Test.objects.all().order_by('-order') 

获得对象的列表,我得到正确的顺序3,2,1的所有对象(订单是整型字段)。

但我跑得

response = {} 
for test in tests: 
    response.update({ 
     test.slug: { 
      'obj': test 
     } 
    }) 

后的对象是为了3,1,2。

如何创建我的自定义字典,但保持顺序?

+0

字典无序。如果您想维护订单,请使用['collections.OrderedDict'](http://docs.python.org/3/library/collections.html#collections.OrderedDict)。 – Matthias

+2

请人们学习使用字典......'response.update({test.slug:whatever})'是一种效率低下且过度复杂的写'reponse [test.slug] = whatever'的方法。 –

回答

2
from collections import OrderedDict 

anyname = OrderedDict() 

填写您的字典,您将获得相同的输出顺序。