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