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中的值进行排序. 我怎么处理这个? 编辑: 假如说 鲍勃被赋予第一优先权,因为他没有出现在字典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'] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |