[英]In numpy, most computationally efficient way to find the array with shortest non-zero sequence in array of arrays
[英]Efficient way to find the largest key in a dictionary with non-zero value
我是新來的 Python,正在嘗試以更 Pythonic 和更高效的方式實現代碼。 給定一個包含數字鍵和值的字典,找到具有非零值的最大鍵的最佳方法是什么?
謝謝
這樣的事情應該相當快:
>>> x = {0: 5, 1: 7, 2: 0}
>>> max(k for k, v in x.iteritems() if v != 0)
1
(刪除!= 0
會稍快一點,但在某種程度上模糊了這個含義。)
Python的max函數采用key=
參數作為“measure”函數。
data = {1: 25, 0: 75}
def keymeasure(key):
return data[key] and key
print max(data, key=keymeasure)
使用內聯lambda來實現相同的效果和相同的局部變量綁定:
print max(data, key=(lambda k: data[k] and k))
最后一種方法是將本地var綁定到匿名密鑰函數中
print max(data, key=(lambda k, mapping=data: mapping[k] and k))
如果我是你,速度是一個大問題,我可能會創建一個新的容器類“DictMax”,通過內部堆棧索引跟蹤它的最大非零值元素,其中頂部元素stack始終是字典中最大元素的關鍵。 這樣你就可以每次都獲得恆定時間內最大的元素。
list=[1, 1, 2, 3,3]
s={items:list.count(items)for items in list} ##occurrence of list
largest_value=max(k for k, v in s.items() if v != 0) #largest number occurrence
print(largest_value)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.