首页 > 解决方案 > 使用字符串和数字从列表中获取值

问题描述

需要得到最接近的值

mylist=['A-B-10','A-B-20','A-B-50']

number=70

Output=A-B-50

最接近的两个值

Output=A-B-50,A-B-20

试过

min(range(len(mylist)), key = lambda i: abs(mylist[i]-number))

该列表是字符串,它不起作用。任何对此进行解码并在简单功能上使用的方法。

标签: pythonlistnumbers

解决方案


要获得最接近的值,您需要从字符串中提取整数值:

out = min(mylist, key=lambda i: abs(int(i.split("-")[-1]) - number))
print(out)

印刷:

A-B-50

要获得两个最接近的数字:

val1 = min(mylist, key=lambda i: abs(int(i.split("-")[-1]) - number))
mylist.remove(val1)
val2 = min(mylist, key=lambda i: abs(int(i.split("-")[-1]) - number))
print(val1, val2)

印刷:

A-B-50 A-B-20

推荐阅读