加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 基于两个词典对列表进行排序

发布时间:2020-12-20 11:07:32 所属栏目:Python 来源:网络整理
导读:我已经查看了用于排序字典的不同解决方案并且感到困惑.因此,决定在这里问问我自己. 我正在设计一个排队应用程序,优先考虑之前没有参与的人.之后,优先级将转到请求的时间. 因此,我有两本词典.一个跟踪参与的数量,另一个跟踪参与的时间. 按一下按钮,我在第一本
我已经查看了用于排序字典的不同解决方案并且感到困惑.因此,决定在这里问问我自己.

我正在设计一个排队应用程序,优先考虑之前没有参与的人.之后,优先级将转到请求的时间.

因此,我有两本词典.一个跟踪参与的数量,另一个跟踪参与的时间.

按一下按钮,我在第一本字典中记录时间如下:

dictionary1[name] = time.time()

它将如下:

dictionary1 = {'jessi':time.time(),'jack':time.time(),'bob':time.time()}

time.time()的值是浮点数.
第二本字典记录了以下参与人数:

dictionary2 = {'jack':2,'john':1,'sam': 4}

我希望0参与的人成为排队的首位.在那之后,参与人数较少的人.

通过参与排序后,我想根据提交时间对人进行排序.

我看到许多使用类似的例子:

sorted_dict = sorted(dict['values'],key=lambda k: k['a']['b'])

但是,当字典2中不存在该值时,我收到错误.

在这两个词典中,我希望按照上述标准订购一个列表.该列表应该从dictionary1生成,但是根据dictionary1和dictionary2中的值进行排序.

我怎么处理这个?

编辑:

假如说
dictionary1 = {‘jessi’:10,’jack’:20,’bob’:30}
dictionary2 = {‘jessi’:1,’jack’:2,’john’:1,’sam’:4}
输出应该是:
list = [‘bob’,’jessi’,’jack’]

鲍勃被赋予第一优先权,因为他没有出现在字典2中.

解决方法

您可以使用返回参与计数和时间元组的键函数对其进行排序:

import time
dictionary1 = {'jessi':time.time()+1,'bob':time.time()-1}
dictionary2 = {'jack':2,'sam': 4}
print(sorted(dictionary1,key=lambda k: (dictionary2.get(k,0),dictionary1[k])))

这输出:

['bob','jessi','jack']

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读