我有一个字典,其中键是任意名称,值是文件的mtime。例如:
{'server_1': 1506286408.854673, 'server_2': 1506286219.1254442, 'server_3':1506472359.154043}
我希望迭代比较字典中找到两个中最大值的两个值,并返回所述大值的键并继续执行此操作,直到只有一个键:val对左。
我知道有一种"订购"按值运行的字典,以及运算符和defaultdict等外部库提供的一些技巧。但是,我很好奇是否有更简单的方法来实现这一目标,并避免尝试对自然无序的结构进行排序。
所以我要找的最终结果是第一次返回server_3,然后是server_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