我有一个包含这些值的经文字典:
{cluster1: 0, cluster2: 0, cluster3: 0}
我有一个已经读入的数据文件,文件中的每一行都被表示为字典中的字符串。
[ "0,1,0,0,0,0,0,0,0,1,1,No,cluster3"," 0,1,0,0,1,0,0,0,0,1,1,No,cluster2" ]
我希望能够为数据文件中的每一行(在列表中表示为字符串),浏览字典并比较Key值,例如。 cluster1查看它是否包含子串“cluster1”2或3.然后相应地更新字典中的值。因此,该程序的目的是计算每个集群的出现次数,并将其表示为具有clusternumber的字典以及每个集群的相应计数。
我只是不确定这样做的语法。到目前为止,这是我的循环:
for verse in verses:
for clusters[Key] in clusters:
if clusters[Key] in verse:
clusters.add(Key, +1) # tries to increment the value of
# the key if the key is in the string verse.
else:
print "not in"
有人可以给我一些关于去哪儿的建议吗?
由于
答案 0 :(得分:4)
你很亲密。你需要查看字典的键:
for verse in verses: for k in cluster: if k in verse: clusters[k] += 1 else: print "not in"
答案 1 :(得分:1)
使用defaultdict和rsplit(从右侧拆分)
verses = [ "0,1,0,0,0,0,0,0,0,1,1,No,cluster3"," 0,1,0,0,1,0,0,0,0,1,1,No,cluster2" ]
from collections import defaultdict
clusters = defaultdict(int)
for verse in verses:
key = verse.rsplit(',',1)[1]
clusters[key] += 1
print clusters
输出:
defaultdict(<type 'int'>, {'cluster2': 1, 'cluster3': 1})
答案 2 :(得分:0)
l=[ "0,1,0,0,0,0,0,0,0,1,1,No,cluster3"," 0,1,0,0,1,0,0,0,0,1,1,No,cluster2" ]
d={'cluster1': 0, 'cluster2': 0, 'cluster3': 0}
for line in l:
tokens = line.split(',')
d[tokens[-1]]+=1
print d
返回
{'cluster2': 1, 'cluster3': 1, 'cluster1': 0}