1

タプルのリストがあります:

lst = [('54', '1.74', '253.2'), ('342', '2.85', '13.46'), ('53','2.43', '15.63')]

[1]2.0に最も近い位置にアイテムがあるタプルを見つけたい

私はこのように行きます:

number = lst[0][1]
for i in lst:
    if abs(float(i[1]) - 2) < float(number):
        number = i[1]
        if number in i:
            print i

しかし、文字列をfloatに変換しようとすると、例外が発生します; /実際にこれを行うにはどうすればよいですか?

4

1 に答える 1

7

これでうまくいくはずです...

min(lst,key=lambda x: abs(float(x[0]) - 2))

関数は、関数minに基づいてリスト内の各要素を比較しkeyます。

デモ:

>>> lst = [('1.74', '253.2'), ('2.85', '13.46'), ('2.43', '15.63')]
>>> min(lst,key=lambda x: abs(float(x[0]) - 2))
('1.74', '253.2')
于 2013-03-13T20:05:31.707 に答える