2016-04-22 3 views
-1

Hier ist mein Code:Wie kann ich alle aus "for clause" resultierenden Werte hinzufügen?

from __future__ import division 
import nltk 
import string 
import re 
import math 
from nltk import bigrams 

f = open('C:/Python27/brown_A1_half.txt', 'rU') 
w = open('C:/Python27/brown_A1_half_Out.txt', 'w') 

#to read whole file using read() 

filecontents = f.read() 
from nltk.tokenize import sent_tokenize 
sent_tokenize_list = sent_tokenize(filecontents) 
result = '' 
new_sentences = ["Start " + sentence + " End " for sentence in sent_tokenize_list] 
result = ''.join(new_sentences) 

tokens = nltk.word_tokenize(result) 
#print tokens 
bi_tokens = tuple(nltk.bigrams(tokens)) 
#print bi_tokens 
bi_freq = nltk.FreqDist(bi_tokens) 
for k, v in bi_freq.items(): 
print k, v 

Dieses Ergebnis bigram und value(=its frequency").

Wie kann ich alle Werte in dieser for-Schleife hinzufügen? Das bedeutet v1 + v2 + v3 ... vn. Ich kann sum Funktion nicht verwenden.

+2

Was meinen Sie, Sie können 'sum' Funktion nicht verwenden? Wo hast du es benutzt und wie? – AKS

+2

Erfahren Sie, wie Sie [Schleifen] (http://www.learnpython.org/en/Loops) verwenden. In Ihrer vorherigen Frage hatten Sie das gleiche Problem. – letmutx

+0

Hier ist der Typ von bi_freq class.nltk.probability.FreqDist. und "k" ist Tupel, "v" ist int. Ich habe gelernt, dass die Summenfunktion auf den Listentyp angewendet werden kann. aber hier, was ich durch meine Codes erhalten habe, sind Tupel, int, Tupel, int, Tupel, int .......... was ich will ist Summe alle int Werte hier .. –

Antwort

0

einfach Ihre letzten beiden Zeilen mit diesem ersetzen:

v_sum = 0 
for k, v in bi_freq.items(): 
    v_sum += v 
    print k, v 
+0

danke deine Hilfe! Ich habe genau das Ergebnis, das ich will! –

0

Ich nehme an, dass v eine Listenstruktur ist.

v = [1,2,3,4,5,6,7,8,9,10] 

result = 0 
for items in v: 
    result += items 

print(result) 

prints "55"

2

Wenn v nur eine Zahl ist, könnten Sie sum alle theese Werte aus dem bi_freq als:

sum(bi_freq.itervalues()) 

bi_freq.itervalues() werden alle Werte erhalten es von bi_freq und dann sum werden diese miteinander ergänzen.

Verwandte Themen