我有词典列表:
container.Register<IChatService, ChatService>(hybrid);
如何在列表中找到最长&#39;长度的字典?最小的开始&#39;并最大限度地结束&#39;条目?
答案 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)