这是一个简单的程序,但我发现它实际上是如何工作的困难。 我有{3}的 database。
finish
这是整个计划, 现在
import matplotlib.pyplot as plt
queries = {}
rewrites = {}
urls = {}
for line in open("data.tsv"):
q, r, u = line.strip().split("\t")
queries.setdefault(q,0)
queries[q] += 1
rewrites.setdefault(r,0)
rewrites[r] += 1
urls.setdefault(u,0)
urls[u] += 1
sQueries = []
sQueries = [x for x in rewrites.values()]
sQueries.sort()
x = range(len(sQueries))
line, = plt.plot(x, sQueries, '-' ,linewidth=2)
plt.show()
如果未找到键i,e和q,则此命令将值设置为0.
queries.setdefault(q,0)
如果有密钥,此命令将每个密钥的值增加1。 同样我们继续所有元组。 然后,
queries[q] += 1
然后我们将值从Dictionary重写存储到List Squeries
sQueries = [x for x in rewrites.values()]
这个命令我没有得到正在发生的事情。任何人都可以解释一下。
答案 0 :(得分:3)
len(sQueries)
给出了列表中的元素数量sQueries
x = range(len(sQueries))
将创建一个列表x,其中包含从0,1,...到(但不包括)sQueries数组长度的元素
答案 1 :(得分:2)
length = len(sQueries) # this is length of sQueries
r = range(length) # this one means from 0 to length-1
所以
x = range(len(sQueries)) # means x is from 0 to sQueries length - 1
答案 2 :(得分:2)
此:
sQueries = []
sQueries = [x for x in rewrites.values()]
sQueries.sort()
是一种迟钝的写作方式
sQueries = rewrites.values()
sQueries = sorted(sQueries)
换句话说,对rewrites
字典的值进行排序。如果,为了论证,sQueries == [2, 3, 7, 9]
,然后len(sQueries) == 4
和range(4) == [0, 1, 2, 3]
。
所以,现在你正在密谋(0,2), (1,3), (2,7), (3,9)
,这对我来说似乎没什么用。您似乎更希望在x轴上使用rewrites
的键,这将是您从TSV文件中读取的r
的不同值。 / p>