在 python 中的元组列表中查找元组
Find tuple in list of tuples in python
我有一个元组列表 (simulationtime,efficiency),我想找到其中相对于最短模拟时间规定了最大效率的元组。关于如何做到这一点的任何提示?
否则非常大的列表的一小部分:
[(109.00537427472713, 0.8), (109.00588429136333, 0.85), (109.00649436705454, 0.86), (110.00055419961151, 0.86), (110.00122432147343, 0.86), (110.00172424060818, 0.86), (110.00236418239592, 0.86), (110.00292411815163, 0.86)]
我希望列表中的输出为 (109.00649436705454, 0.86),因为它对应于最短模拟时间的最大效率。现在我在做:
next(v for v in AoD_log if v[1] >= 0.85)
但最大可实现效率:元组的索引[1]并不总是已知的。
your_list = [(109.00537427472713, 0.8), (109.00588429136333, 0.85), (109.00649436705454, 0.86), (110.00055419961151, 0.86), (110.00122432147343, 0.86), (110.00172424060818, 0.86), (110.00236418239592, 0.86), (110.00292411815163, 0.86)]
max_efficiency = max(your_list, key=lambda x : x[1])[1]
min_simulation_time = min((x for x in your_list if x[1]==max_efficiency))
输出:
(109.00649436705454, 0.86)
基于@Manlai A 的回答:
试试这个:
next(v for v in AoD_log if v[1] == max(AoD_log, key=lambda x: x[1]))
我有一个元组列表 (simulationtime,efficiency),我想找到其中相对于最短模拟时间规定了最大效率的元组。关于如何做到这一点的任何提示? 否则非常大的列表的一小部分:
[(109.00537427472713, 0.8), (109.00588429136333, 0.85), (109.00649436705454, 0.86), (110.00055419961151, 0.86), (110.00122432147343, 0.86), (110.00172424060818, 0.86), (110.00236418239592, 0.86), (110.00292411815163, 0.86)]
我希望列表中的输出为 (109.00649436705454, 0.86),因为它对应于最短模拟时间的最大效率。现在我在做:
next(v for v in AoD_log if v[1] >= 0.85)
但最大可实现效率:元组的索引[1]并不总是已知的。
your_list = [(109.00537427472713, 0.8), (109.00588429136333, 0.85), (109.00649436705454, 0.86), (110.00055419961151, 0.86), (110.00122432147343, 0.86), (110.00172424060818, 0.86), (110.00236418239592, 0.86), (110.00292411815163, 0.86)]
max_efficiency = max(your_list, key=lambda x : x[1])[1]
min_simulation_time = min((x for x in your_list if x[1]==max_efficiency))
输出:
(109.00649436705454, 0.86)
基于@Manlai A 的回答:
试试这个:
next(v for v in AoD_log if v[1] == max(AoD_log, key=lambda x: x[1]))