从列表中选择子列表,其中子列表的项与给定值的差异最小

时间:2017-10-05 12:34:25

标签: python

我正在使用python v2.7并且我有参数mean_val=35.3085666667 我有一个包含子列表的列表new_add_list。在new_add_list[3]我有一个得分值。从new_add_list开始,我想获得最小值为abs(new_add_list[3]-mean_val)的子列表。

new_add_list=[
['encoding_txt\\pirkagia_10b_192x144_15_qp_26_ON_encoder_randomaccess_B16_Filte
rs_ON_scalable_JOURNAL2017.txt', '192x144', 26, 35.1782, 136.8125, 300.788, 0.844, -3.5], 
['encoding_txt\\pirkagia_10b_384x288_15_qp_28_ON_encoder_randomaccess_
B16_Filters_ON_scalable_JOURNAL2017.txt', '384x288', 28, 35.2193, 275.4614, 1065.412, 2.167, -2], 
['encoding_txt\\pirkagia_10b_720x576_15_qp_30_ON_encoder_rando
maccess_B16_Filters_ON_scalable_JOURNAL2017.txt', '720x576', 30, 35.5282, 484.3387, 3536.937, 6.679, 1.5]]

对于该示例,答案必须是:

['encoding_txt\\pirkagia_10b_384x288_15_qp_28_ON_encoder_randomaccess_
B16_Filters_ON_scalable_JOURNAL2017.txt', '384x288', 28, 35.2193, 275.4614, 1065.412, 2.167, -2]

我可以使用类似sub(new_add_list, key=itemgetter(3)-mean_val)

的内容吗?

1 个答案:

答案 0 :(得分:2)

使用min和适当的键功能:

min(new_add_list, key=lambda l: abs(l[3] - mean_val))