我有一个像这样的字典元素数组:
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]
感谢。
答案 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'