使用Python的Dictonary的最大值和最小值

时间:2015-11-08 04:07:25

标签: python list dictionary

我有词典列表:

container.Register<IChatService, ChatService>(hybrid);

如何在列表中找到最长&#39;长度的字典?最小的开始&#39;并最大限度地结束&#39;条目?

2 个答案:

答案 0 :(得分:1)

如果您愿意,可以按所需的属性进行排序,并获取第一个元素。

l_dict = [{'start': 2, 'length': 2, 'end': 4}, {'start': 1, 'length': 5, 'end': 8}, {'start': 3, 'length': 2, 'end': 7}, {'start': 3, 'length': 1, 'end': 3}, {'start': 2, 'length': 1, 'end': 2}, {'start': 1, 'length': 4, 'end': 5}, {'start': 1, 'length': 5, 'end': 9}, {'start': 3, 'length': 1, 'end': 3}, {'start': 1, 'length': 5, 'end': 6}, {'start': 1, 'length': 3, 'end': 3}, {'start': 1, 'length': 2, 'end': 2}, {'start': 1, 'length': 3, 'end': 5}, {'start': 4, 'length': 1, 'end': 4}, {'start': 1, 'length': 4, 'end': 4}, {'start': 1, 'length': 1, 'end': 1}, {'start': 1, 'length': 4, 'end': 6}]
l_dict_sorted = sorted(l_dict, key=lambda x: (-x['length'],x['start'],-x['end']))
l_dict_sorted

答案 1 :(得分:1)

使用生成器这样做是可取的......而且我投入一个lambda,因为它们非常适合一个衬里。

getExtremum = lambda seq, attr, minmax: minmax(d[attr] for d in seq)

max_length = getExtremum(l_dict, 'length', max)
min_start = getExtremum(l_dict, 'start', min)
max_end = getExtremum(l_dict, 'end', max)