Python Вставка значений в словарь с использованием цикла - PullRequest
1 голос
/ 11 апреля 2011

У меня есть словарь стихов, который содержит эти значения:

{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 или 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 ]

4 голосов
/ 11 апреля 2011

Ты совсем близко.Вам нужно просмотреть ключи словаря:

for verse in verses:
  for k in cluster:
    if k in verse:
      clusters[k] += 1
    else: print "not in"
1 голос
/ 11 апреля 2011

Использовать 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})
0 голосов
/ 11 апреля 2011
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}
...