【问题标题】:Implementing argmin in Python for dictionaries [duplicate]在 Python 中为字典实现 argmin [重复]
【发布时间】:2015-07-17 11:27:45
【问题描述】:

这可能以前被问过,但是有人知道在 Python 中实现 argmin 的优雅方法吗?也就是说,给定一个字典 D 将整数映射到整数,我想找到键 k 使得 D[k] 最小化。

例如:

d = {1: 100, 2:200}
argmin(d) = 1

【问题讨论】:

    标签: python function dictionary


    【解决方案1】:
    def argmin(d):
        if not d: return None
        min_val = min(d.values())
        return [k for k in d if d[k] == min_val][0]
    
    d = {1: 50, 2:100, 3:11}
    min_index = argmin(d)
    

    编辑

    min 有一个可选的 key 参数,因此您可以使用它来代替:

    min_index = min(d, key=d.get)
    

    【讨论】:

    • 这是错误的,而且效率极低。它需要二次方时间,它使用max 而不是min,它使用is,它应该使用==
    • 我并不是说它不能改进。但是它怎么会使用二次时间呢?在我看来它是线性的。
    • @user3267581:原始版本为每个键计算min(z.values())
    • 是的,我在 ipython 中做了一个%timeit,如果你在列表理解中使用min(z.values()),它的速度会大大降低。
    猜你喜欢
    • 2013-01-15
    • 1970-01-01
    • 2018-06-28
    • 2016-01-10
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2019-03-28
    • 2021-11-05
    相关资源
    最近更新 更多