从包含字符串和数字的列表中获取值

Get the value from the list with strings and numbers

需要获取最接近的值

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))

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

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

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