2016-07-12 7 views
1

文字列の文字を数えてからこの値を辞書に更新する際に問題があります。Python - 反復中に.count()関数の後に辞書値を更新する

私はアルファベット文字の辞書を繰り返し、各ペアで.count()関数を使用して文と比較しています。 dic [k] = xvalを使用すると、カウントが機能していて、期待する数値(この場合はxval)を返しますが、辞書を更新していません。

非常に簡単です。可能であれば、アドバイスをお願いします。

import string 

type = ("cat sat on the mat").lower() 

dic = dict.fromkeys(string.ascii_lowercase, 0) 

print(dic) 

for k, v in dic.items(): 
    xval = type.count(k) 
    print(xval) 
    dic[k] = xval 
    print ("%s: %s" % (k, v)) 

これは完了のための出力です。どうもありがとう。

{'m': 0, 'l': 0, 'h': 0, 'f': 0, 'd': 0, 'x': 0, 'i': 0, 's': 0, 'r': 0, 'u': 0, 'z': 0, 't': 0, 'c': 0, 'a': 0, 'q': 0, 'p': 0, 'j': 0, 'n': 0, 'g': 0, 'w': 0, 'o': 0, 'e': 0, 'k': 0, 'b': 0, 'v': 0, 'y': 0} 


0 
f: 0 
0 
q: 0 
0 
r: 0 
1 
m: 0 
1 
c: 0 
3 
a: 0 
0 
u: 0 
0 
g: 0 
1 
e: 0 
0 
d: 0 
0 
v: 0 
1 
h: 0 
0 
y: 0 
0 
k: 0 
4 
t: 0 
0 
i: 0 
1 
o: 0 
0 
w: 0 
0 
b: 0 
1 
s: 0 
0 
l: 0 
0 
j: 0 
0 
x: 0 
0 
z: 0 
1 
n: 0 
0 
p: 0 

Process finished with exit code 0 
+0

あなたはプログラミング言語のためのタグを追加する必要があります。 – Alden

+0

もちろん。申し訳ありません、それはしばらくありました。 – Praxis

答えて

1

あなたは、更新された辞書を反映していないkvを印刷しています。

import string 

type = ("cat sat on the mat").lower() 

dic = dict.fromkeys(string.ascii_lowercase, 0) 

print(dic) 

for k in dic: 
    xval = type.count(k) 
    print(xval) 
    dic[k] = xval 
    print k, ":", dic[k] 

出力

{'a': 0, 'c': 0, 'b': 0, 'e': 0, 'd': 0, 'g': 0, 'f': 0, 'i': 0, 'h': 0, 'k': 0, 'j': 0, 'm': 0, 'l': 0, 'o': 0, 'n': 0, 'q': 0, 'p': 0, 's': 0, 'r': 0, 'u': 0, 't': 0, 'w': 0, 'v': 0, 'y': 0, 'x': 0, 'z': 0} 
3 
a : 3 
1 
c : 1 
0 
b : 0 
1 
e : 1 
0 
d : 0 
0 
g : 0 
0 
f : 0 
0 
i : 0 
1 
h : 1 
0 
k : 0 
0 
j : 0 
1 
m : 1 
0 
l : 0 
1 
o : 1 
1 
n : 1 
0 
q : 0 
0 
p : 0 
1 
s : 1 
0 
r : 0 
0 
u : 0 
4 
t : 4 
0 
w : 0 
0 
v : 0 
0 
y : 0 
0 
x : 0 
0 
z : 0 
+0

ありがとう、それは動作します。 – Praxis

関連する問題