由于需求变更,不得不重写问题。
我有一本字典如下:
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]
但这并没有给我我想要的结果。
有什么想法吗?
谢谢!
答案 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']