我不认为在这种情况下使用numpy数组会有帮助。
特别是,将一个数据结构转换成另一个(在你的情况下是numpy数组或heapq中的元组列表)会比遍历每个元组来找到最大值要慢得多。这是因为转换数据结构还需要遍历原始数据结构,加上实例化新结构的对象,加上将值存储到新结构中,再使用新结构获取所需值。
使用列表的内置函数或方法很可能会导致更快的计算。我能想到的最简单的实现:
>>> li = [('a', 10), ('b', 30), ('c', 20)]
>>> max(li, key=lambda e : e[1])[0]
'b'
如果您对最低值或将找到的值弹出列表并通过排序的内容进行检查(因此只需一次检查原始列表!)也感兴趣,还有其他可能的内容:
>>> li = [('a', 10), ('b', 30), ('c', 20)]
>>> li.sort(key=lambda e : e[1])
>>> li
[('a', 10), ('c', 20), ('b', 30)]
>>> li[-1][0]
'b'
或者:
>>> sorted(li, key=lambda e: e[1])[-1][0]
'b'
HTH!