Python按上次更改值的顺序排序 - python

我正在为网站写信使。
所以,我有一些功能序列。
首先是

def get_messages(self):
    """select query"""
    messages = self.model.load(['or', ('sender', self.my_id), ('receiver', self.my_id)])
    return messages

返回数据库表中带有消息的所有记录,我是消息的发送者或接收者。
下一个功能是

def get_dialogs(self):
    """returns dialogs of curr user"""
    dialogs = {}
    for msg in self.messages:            
        if msg['receiver'] != self.my_id:
            tmp_d = msg['receiver']
        else:
            tmp_d = msg['sender']

        if tmp_d not in dialogs.keys():
            dialogs[tmp_d] = [msg]
        else:
            dialogs[tmp_d].append(msg)

    return dialogs

在这里,我正在准备字典,关键是与我交谈的用户。
那里的问题是开始。
这是消息序列的屏幕截图。

我希望字典键序列将按添加到值列表中的最后一条消息进行排序。
在这里,我没有对其进行排序,实际上是一个问题(我无法理解的问题)-默认情况下,键序列应为1, 4, 222595, 99,但程序认为是99, 1, 222595, 4(我检查了get_messages func return消息按正确顺序排列。

主要问题
如何通过上次更改值对dict键排序(或让dicti知道无法对dict排序)?

python大神给出的解决方案

Python中的dict未排序-键不会以任何特定顺序出现。

考虑改用标准库中的collections.OrderedDictOrderedDict使您的项目按插入时间排序(即,根据将项目添加到dict的顺序)。

更新:如果您使用的是Python 3.6以上版本,则字典现在会按照插入顺序进行排序。此行为在Python 3.7+中得到保证(在Python 3.6中,仅因为解释器是通过这种方式构建的,所以它是正确的)。