[英]Time Complexity to create a dictionary from a list in python
為列表中元素的出現頻率創建字典(在 python 中)的時間復雜度是多少?
例如:我有一個列表 - ls = [5,3,3,2] 我想創建一個字典來檢查列表中每個元素的頻率。 這是代碼:
freq = {}
for ele in ls:
if ele in freq:
freq[ele] += 1
else:
freq[ele] = 1
這將從列表中創建字典,但是創建字典的時間復雜度是多少?
對此的任何見解都會有所幫助。 謝謝你。
這將是線性O(n)
復雜度,因為您只在沒有嵌套循環/遞歸/等的情況下遍歷列表一次...至於檢查ele in freq
它是O(1)
復雜度,因為 dicts 是哈希映射並使用dict.__contains__
只對值進行哈希查找。 雖然使用collections.Counter
是更受歡迎的方式:
from collections import Counter
ls = [5,3,3,2]
freq = Counter(ls)
>>> dict(freq)
{5: 1, 3: 2, 2: 1}
它應該是線性O(n)
因為您只是從列表的第一個到最后一個線性循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.