Dex*_*ter 3 python performance dictionary numpy max
我有大量(数千)单词:值(浮点)对的集合。我需要找到最好的值并提取相应的关联词。例如,我有(a,2.4),(b,5.2),(c,1.2),(d,9.2),(e,6.3),(f,0.4)。我想要 (d,9.2) 作为输出。
目前,我正在使用字典来存储这些元组,并使用 max 运算符来检索字典中的最大键值。我想知道 numpy 数组是否会更有效。在此征求专家意见。
我不知道 numpy 数组在这种情况下如何帮助你。
特别是,将一个数据结构转换为另一个数据结构(在您的情况下是 numpy 数组或 heapq 中的元组列表)将比在每个元组上迭代查找最大值慢得多。这是因为转换数据结构还需要迭代原始数据结构,并为新结构实例化一个对象,将值存储到新结构中,再加上使用新结构来获取请求的值。
使用列表的内置函数或方法很可能会导致更快的计算。我能想到的最简单的实现:
>>> li = [('a', 10), ('b', 30), ('c', 20)]
>>> max(li, key=lambda e : e[1])[0]
'b'
Run Code Online (Sandbox Code Playgroud)
如果您还对最低值或从列表中弹出您发现的值可以通过排序之类的内容感兴趣,则其他可能的方法(因此您只需检查原始列表一次!):
>>> 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'
Run Code Online (Sandbox Code Playgroud)
或者:
>>> sorted(li, key=lambda e: e[1])[-1][0]
'b'
Run Code Online (Sandbox Code Playgroud)
哈!
| 归档时间: |
|
| 查看次数: |
3689 次 |
| 最近记录: |