Python使用循环将值插入字典

时间:2011-04-10 23:41:55

标签: python dictionary counting

我有一个包含这些值的经文字典:

{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"

有人可以给我一些关于去哪儿的建议吗?

由于

3 个答案:

答案 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}