【发布时间】:2013-10-14 20:30:19
【问题描述】:
我有一个清单。它相当大。它有超过 100 万个条目。我想计算其中每个字符串的频率。它将数字存储为从 1 到 1000 的字符串。我使用了以下内容,但它会持续运行数小时:
d = {b:a.count(b) for b in a}
n, m = d.keys(), d.values()
print n, m
【问题讨论】:
-
问题是,要构建
dict,您正在执行n次(列表长度a)成本n(a.count(b)必须迭代所有a搜索bs)。这意味着构建它需要与n^2成正比的时间。如果您有一个包含 100 万个条目的列表,则您必须执行(10^6)^2 = 10^12操作。即使单个操作是机器指令,构建它也需要大约 10^3 秒。实际上,每个操作可能需要一些(或至少)数十个机器指令,因此您必须等待数小时/数天。
标签: python list python-2.7 count frequency