列表字典中的Python最小长度/最大值

时间:2012-07-30 22:21:51

标签: python list dictionary max min

由于需求变更,不得不重写问题。

我有一本字典如下:

d = {'a': [4, 2], 'b': [3, 4], 'c': [4, 3], 'd': [4, 3], 'e': [4], 'f': [4], 'g': [4]}

我想获得与字典d中最小长度相关联的键,以及具有最大值的键。

在这种情况下,长度最小的键(此词典中列表的最小长度)应返回

'e, 'f', 'g'

具有最大值(每个列表中的整数之和)的那些应返回

'b' 'c'

我试过了

min_value = min(dict.itervalues())
min_keys = [k for k in d if dict[k] == min_value]

但这并没有给我我想要的结果。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:7)

def get_smallest_length(x):
    return [k for k in x.keys() if len(x.get(k))==min([len(n) for n in x.values()])]

def get_largest_sum(x):
    return [k for k in x.keys() if sum(x.get(k))==max([sum(n) for n in x.values()])]

x = {'a': [4, 2], 'c': [4, 3], 'b': [3, 4], 'e': [4], 'd': [4, 3], 'g': [4], 'f': [4]}

print get_smallest_length(x)
print get_largest_sum(x)

返回:

['e', 'g', 'f']
['c', 'b', 'd']