簡體   English   中英

從python中的列表創建字典的時間復雜度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM