在python 2.7中选择字典元素数组中min值的字典项

时间:2014-04-20 14:15:39

标签: python list dictionary min

我有一个像这样的字典元素数组:

d = [{'k': 'k1', 'v':4}, {'k': 'k2', 'v':5}, {'k': 'k3', 'v':2}]

我想从具有最低'v'的字典元素中检索'k'的值,可能存在多个具有相同最低值的值。在上面的例子中,我想得到:

['k3']

这就是我目前所拥有的,这是解决问题的最有效和最方便的方法(除了将两条线折叠成一条)?

m = min([x['v'] for x in d])                               
r = [x['k'] for x in d if x['v'] == m]    

感谢。

2 个答案:

答案 0 :(得分:2)

删除不必要的列表推导并改为使用生成器表达式。

m = min(x['v'] for x in d)                               
r = [x['k'] for x in d if x['v'] == m]   

但是,您是否有理由保留键值对列表,而不是dict? (要有多图?)

d = {'k1':4, 'k2':5, 'k3':2}
m = min(d.itervalues())                        
r = [k for k, v in d.iteritems() if v == m]   

答案 1 :(得分:0)

r = min(d, key=lambda x: x["v"])["k"]

这应该给你'k3'