区块链技术博客
www.b2bchain.cn

Python按上次更改值的顺序排序 – python程序员分享

本文介绍了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中,仅因为解释器是通过这种方式构建的,所以它是正确的)。

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Python按上次更改值的顺序排序 – python程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们