给定一个带有整数的元组内部的元组,我想找到元组中最接近我输入的数字的数字:
Data = (('Batik Air',int(561)),('Citilink',int(620)),('Garuda Indonesia',int(1501))
Value=500
findClosest(Data,Value)
# magic
('Batik Air',561)
有没有办法做到这一点?
答案 0 :(得分:6)
使用min
查找差异最小的元组:
>>> Data = (('Batik Air',int(561)),('Citilink',int(620)),('Garuda Indonesia',int(1501)))
>>> Value = 500
>>> min(Data, key=lambda t: abs(t[1]-Value))
('Batik Air', 561)
其他样式提示:对于变量名称*使用小写字母更为惯用,并且您不需要调用int
,因为这些值都已经存在。
>>> data = (('Batik Air',561),('Citilink',620),('Garuda Indonesia',1501))
>>> value = 500
>>> min(data, key=lambda t: abs(t[1]-value))
('Batik Air', 561)
(*有一些例外;见https://www.python.org/dev/peps/pep-0008/#naming-conventions)