Python 使用循环向字典插入值

1 投票
3 回答
5650 浏览
提问于 2025-04-16 15:27

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

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

我想要对数据文件中的每一行(以字符串的形式放在一个列表里)进行处理,遍历字典,比较键值,比如说“cluster1”,看看它是否包含子字符串“cluster1 2”或“cluster1 3”。然后根据比较的结果更新字典里的值。所以这个程序的目标是统计每个集群出现的次数,并把这些信息以字典的形式表示出来,字典里包含集群编号和对应的计数。

我只是对语法不太确定,目前我的循环是这样的:

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

返回值

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})
4

你已经很接近了。你需要查看字典中的键:

for verse in verses:
  for k in cluster:
    if k in verse:
      clusters[k] += 1
    else: print "not in"

撰写回答