从字符串和整数的元组,得到元组内最接近给定值的数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从字符串和整数的元组,得到元组内最接近给定值的数字相关的知识,希望对你有一定的参考价值。

给定一个带有整数的元组内部的元组,我想找到哪个数字在元组内最接近我输入的数字:

Data = (('Batik Air',int(561)),('Citilink',int(620)),('Garuda Indonesia',int(1501))
Value=500
findClosest(Data,Value)
# magic
('Batik Air',561)

有没有办法做到这一点?

答案

使用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

以上是关于从字符串和整数的元组,得到元组内最接近给定值的数字的主要内容,如果未能解决你的问题,请参考以下文章

从列表中的元组中删除空字符串

如何将列表(元组内)中的元组转换为列表?

一个SQL查询不会写

从Haskell中的元组中提取第n个元素(其中n和元组被赋予参数)

如何从 C# 中的元组列表中获取最接近“a”的 4 个元素?

从元组列表中返回具有最小 y 值的元组