比较字典中的多个值并返回键

时间:2017-09-27 00:49:02

标签: python python-3.x dictionary comparison

我有一个字典,其中键是任意名称,值是文件的mtime。例如:

{'server_1': 1506286408.854673, 'server_2': 1506286219.1254442, 'server_3':1506472359.154043}

我希望迭代比较字典中找到两个中最大值的两个值,并返回所述大值的键并继续执行此操作,直到只有一个键:val对左。

我知道有一种"订购"按值运行的字典,以及运算符和defaultdict等外部库提供的一些技巧。但是,我很好奇是否有更简单的方法来实现这一目标,并避免尝试对自然无序的结构进行排序。

所以我要找的最终结果是第一次返回server_3,然后是server_1,然后停在那里。

1 个答案:

答案 0 :(得分:0)

看起来您希望根据值对字典进行排序,但忽略最后一个字典。

def keys_sorted_by_values(d):
    return [ k for k, v in sorted(d.items(), key=lambda item: item[1], reverse=True) ][:-1]

server_to_mtime = {'server_1': 1506286408.854673, 'server_2': 1506286219.1254442, 'server_3':1506472359.154043}    
for server in keys_sorted_by_values(server_to_mtime):
    print(server)

输出

server_3
server_1