简体   繁体   English

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

[英]Select sublist from a list where sublist's item has minimum difference from a given value

I'm using python v2.7 and I have the parameter mean_val=35.3085666667 I have a list new_add_list that contains sublists. 我正在使用python v2.7 ,参数为mean_val=35.3085666667我有一个包含子列表的列表new_add_list In new_add_list[3] I have a score value. new_add_list[3]我有一个得分值。 From new_add_list I want to get the sublist that has the minimun value of abs(new_add_list[3]-mean_val) . 我想从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]]

For that example the answer must be: 对于该示例,答案必须是:

['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]

Can I use something like sub(new_add_list, key=itemgetter(3)-mean_val) 我可以使用类似sub(new_add_list, key=itemgetter(3)-mean_val)

min与适当的按键功能配合使用:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM