gpt4 book ai didi

python - 根据两个字典对列表进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:37 25 4
gpt4 key购买 nike

我看过不同的字典排序解决方案并感到困惑。因此,决定在这里问问我自己。

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

因此,我有两本字典。一个记录参与次数,另一个记录参与时间。

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

dictionary1[name] = time.time()

它将如下所示:

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

time.time() 的值是 float 。第二个字典跟踪有多少参与如下:

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']

Bob 被赋予第一优先级,因为他在字典 2 中不存在。

最佳答案

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

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

这个输出:

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

关于python - 根据两个字典对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52553208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com