我有一个内部列表中包含对的列表列表,如下所示。
odds_list = [[(105, -116), (105, -115), (-115, -105), (-115, -105), (100, -120), (-115, 105), (100, -120), (105, -125), (-115, -105), (-115, -105)], [(-108, -102), (110, -130), (-110, -110), (-108, -112), (-115, -105), (-105, -105), (-115, -105), (-110, -110), (-110, -110), (-110, -110)]
每个内部列表中有10对,并且有13个内部列表(我没有在示例中复制和粘贴它们)。
我需要左对值的最大值和最小值(在该特定内部列表中的所有对中),以及右对值的最大值和最小值(在该特定内部列表中的所有对中) )对于每个内部列表。
我如何使用python进行此操作?
对于10对的第一个列表,它将是
Max_Value_Left_List_1 = 105
Min_Value_Left_List_1 = -115
Max_Value_Right_List_1 = 105
Min_Value_Right_List_1 = -125
注意:在这种情况下,内部列表的数量是10,但这可能会发生变化,但内部列表中总会有10对。
答案 0 :(得分:2)
这是一种计算每个内部列表的结果,然后将每个内部列表的结果作为字典存储在列表中的方法 - 每个内部列表一个字典。
max_and_min = [] # This will contain a dictionary per inner list
for inner_list in odds_list:
lefts = [x[0] for x in inner_list]
rights = [x[1] for x in inner_list]
result_dict = {'max_left': max(lefts), 'min_left': min(lefts), 'max_right': max(rights), 'min_right': min(rights)}
max_and_min.append(result_dict)
# Get the result dict for the first inner list
print(max_and_min[0])
答案 1 :(得分:0)
您可以使用pandas DataFrame帮助您快速计算:
>>> data=[]
>>> for list_e in odds_list:
... for left,right in list_e:
... data.append([left,right])
...
>>> df=DataFrame(data)
>>> df.describe()
0 1
count 40.000000 40.00000
mean -46.650000 -100.82500
std 100.986557 48.45981
min -115.000000 -130.00000
25% -115.000000 -116.75000
50% -110.000000 -110.00000
75% 100.000000 -105.00000
max 125.000000 105.00000
>>> df[0].min()
-115
>>> df[0].max()
125
>>> df[1].max()
105
>>> df[1].min()
-130