我有一个由列表作为值组成的字典。Listlen(2)表示数组的范围:new_dict = {0: [0, 7], 1:[15, 21], 2:[-5, 3]}我需要找到具有最大范围(即最大)的列表的键list[1] - list[0]我已经这样做了,并且效果很好,但我假设它可以以更简单或更Pythonic的方式完成。largest = float("-inf")largest_list = []for key in new_dict.keys(): temp = new_dict[key][1] - new_dict[key][0] if temp > largest: largest = temp largest_list = new_dict[key]
2 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
您可以使用max()
自定义key
函数:
>>> new_dict = {0: [0, 7], 1:[15, 21], 2:[-5, 3]}
>>> max(new_dict.items(), key=lambda x: x[1][1] - x[1][0])[0]
2
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
玩得开心一点...
>>> import operator
>>> min(new_dict, key=lambda k: operator.sub(*new_dict[k]))
2
或者
>>> max(new_dict, key=lambda k: len(range(*new_dict[k])))
2
或者
>>> min(new_dict, key=lambda k: int.__sub__(*new_dict[k]))
2
添加回答
举报
0/150
提交
取消