如果我有一个Python字典,我如何获得包含最小值的条目的键?

我在想一些与min()函数有关的事情…

给定输入:

{320:1, 321:0, 322:3}

它会返回321。


当前回答

min(zip(d.values(), d.keys()))[1]

使用zip函数创建包含值和键的元组迭代器。然后用一个min函数包装它,该函数根据第一个键取最小值。返回一个包含(value, key)对的元组。[1]的索引用于获取相应的键。

其他回答

如果你不确定你没有多个最小值,我建议:

d = {320:1, 321:0, 322:3, 323:0}
print ', '.join(str(key) for min_value in (min(d.values()),) for key in d if d[key]==min_value)

"""Output:
321, 323
"""

对于具有相同最小值的多个键,您可以使用列表推导式:

d = {320:1, 321:0, 322:3, 323:0}

minval = min(d.values())
res = [k for k, v in d.items() if v==minval]

[321, 323]

等价的功能版本:

res = list(filter(lambda x: d[x]==minval, d))
min(zip(d.values(), d.keys()))[1]

使用zip函数创建包含值和键的元组迭代器。然后用一个min函数包装它,该函数根据第一个键取最小值。返回一个包含(value, key)对的元组。[1]的索引用于获取相应的键。

my_dic = {320:1, 321:0, 322:3}
min_value = sorted(my_dic, key=lambda k: my_dic[k])[0]
print(min_value)

一个只有排序方法的解。

我用排序方法从最小到最大对值进行排序 当我们得到第一个索引时,它给出了最小的键。

d={}
d[320]=1
d[321]=0
d[322]=3
value = min(d.values())
for k in d.keys(): 
    if d[k] == value:
        print k,d[k]