2012-11-02 92 views
2

可能重复来:
How do you retrieve items from a dictionary in the order that they’re inserted?字典键不串行

我有Django的视图和模板的问题

获得有关像

会议细节之后
 for meeting in get_meetings: 
      if meeting.venue_id ==None: 
       mee_data = {} 
       mee_data['id'] = meeting.id 
       getdate = meeting.meeting_datetime 
       mee_data['date'] = getdate.strftime("%Y-%m-%d") 
       mee_data['end_time'] = meeting.end_time 
       mee_data['meeting_duration'] = meeting.meeting_duration 
       mee_data['start_time'] = meeting.start_time 
       mee_data['meetingID'] = meeting.meetingID 
       mee_data['id'] = meeting.id 
       mee_data['start_time'] = meeting.start_time 

       mee_data['name'] = meeting.name 

       getall.append(mee_data) 

凡GETALL是现在附加字典数据后,我在上面

已经声明了一个列表。

我期待的结果在我的模板像

[{"id": "REG_431103567", "date": "", "end_time": "", "meeting_duration": "", "start_time": "2012-10-29", "meetingID": 192dnjd, "name": "TEsts"},...] 

基本键可惜结果快到像的顺序。

[{"meetingID": "REG_431103567", "start_time": "", "meeting_duration": "", "end_time": "", "date": "2012-10-29", "id": 192, "name": "TEsts"},...] 

请建议我在这里应该做什么,以便我可以以正确的方式获得钥匙和相应的值。

感谢

+0

请参阅http://stackoverflow.com/a/2030935/647772 – 2012-11-02 09:18:59

+2

python中的字典是无序的。使用http://docs.python.org/2/library/collections.html#collections.OrderedDict –

+2

您是否考虑过在模板中分别显示每个属性来处理它?我的意思是,在字典格式是不会好看的网页输出反正... –

回答

6

我建议使用OrderedDict得到它插入的顺序数据。

词典不维护订单,但OrderedDict这是一个子类0f dict可以维护顺序。

例子:

>>> from collections import OrderedDict 
>>> d=OrderedDict() 
>>> d["key1"]="foo" 
>>> d["key2"]="bar" 
>>> d 
OrderedDict([('key1', 'foo'), ('key2', 'bar')]) 

注:OrderedDict在Python 2.7版推出,因此不会在以前的版本。而不是正常dict

+0

这就是我一直在寻找的感谢阿什维尼 – user1667633

+0

@ user1667633注意'OrderedDict'在仅Python 2.7版推出,所以不会在工作之前的版本。 –

+0

请注意,有一些可用于以前版本的Python的实现。查看标记为重复的问题的答案。 – moooeeeep

1

使用OrderedDict

from collections import OrderedDict 

for meeting in get_meetings: 
      if meeting.venue_id ==None: 
       mee_data = OrderedDict() 
       ...