【问题标题】:Comparing multiple values within a dictionary and returning key比较字典中的多个值并返回键
【发布时间】:2017-09-27 00:49:02
【问题描述】:

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

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

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

我知道有一种方法可以通过外部库(如 operator 和 defaultdict)提供的一些技巧按值“排序”字典。但是,我很好奇是否有更简单的方法来实现这一目标并避免尝试对自然无序的结构进行排序。

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

【问题讨论】:

    标签: python python-3.x dictionary comparison


    【解决方案1】:

    您似乎想根据值对字典进行排序,但忽略最后一个。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多