在字典中累积多个结果
Accumulating Multiple Results In a Dictionary
问题如下:
从字符串 stri 创建一个名为 char_d 的字典,这样键就是一个字符,值就是它出现的次数。
这是我试过的代码:
stri = "what can I do"
char_d={}
lst=stri.split()
for wrd in lst:
for c in wrd:
if c not in char_d:
char_d[c]=0
char_d[c]+=1
我得到的输出是:
[('h', 1), ('o', 1), ('c', 1), ('t', 1), ('n', 1), ('d', 1), ('I', 1), ('a', 2), ('w', 1)]
预期值应包括:
(' ',3)
我认为该值应该包括 space 但我们如何做到这一点?
stri = "what can I do"
char_d={}
#lst=stri.split()
#for wrd in stri:
for c in stri:
if c not in char_d:
char_d[c]=0
char_d[c]+=1
我想我找到了解决方案,但如果有任何进一步的解释,我将不胜感激。
您提出的建议有效。您可以使用字典的 get
方法更加 pythonic。
stri = "what can I do"
char_d={}
#lst=stri.split()
#for wrd in stri:
for c in stri:
char_d[c] = char_d.get(c, 0) + 1
如果字典中不存在 c,get(c, 0)
将 return 0。
您也可以使用集合中的计数器。
char_d = Counter(stri)
您的词典不包含空白字符的原因是因为您使用了 .split() 方法。
lst=stri.split()
因为括号之间没有参数,split()方法使用默认的(空白字符)将字符串分割成一个有序的序列,returns作为一个列表对象
['what', 'can', 'I', 'do']
您可以将任何字符串(或计算结果为字符串的对象)传递给方法,a la:
lst=stri.split('a')
这会将 stri
拆分为字符 'a',生成:
['wh', 't c', 'n I do']
在每种情况下,split 方法使用的分隔符都会在此过程中丢失。
问题如下: 从字符串 stri 创建一个名为 char_d 的字典,这样键就是一个字符,值就是它出现的次数。
这是我试过的代码:
stri = "what can I do"
char_d={}
lst=stri.split()
for wrd in lst:
for c in wrd:
if c not in char_d:
char_d[c]=0
char_d[c]+=1
我得到的输出是:
[('h', 1), ('o', 1), ('c', 1), ('t', 1), ('n', 1), ('d', 1), ('I', 1), ('a', 2), ('w', 1)]
预期值应包括: (' ',3)
我认为该值应该包括 space 但我们如何做到这一点?
stri = "what can I do"
char_d={}
#lst=stri.split()
#for wrd in stri:
for c in stri:
if c not in char_d:
char_d[c]=0
char_d[c]+=1
我想我找到了解决方案,但如果有任何进一步的解释,我将不胜感激。
您提出的建议有效。您可以使用字典的 get
方法更加 pythonic。
stri = "what can I do"
char_d={}
#lst=stri.split()
#for wrd in stri:
for c in stri:
char_d[c] = char_d.get(c, 0) + 1
如果字典中不存在 c,get(c, 0)
将 return 0。
您也可以使用集合中的计数器。
char_d = Counter(stri)
您的词典不包含空白字符的原因是因为您使用了 .split() 方法。
lst=stri.split()
因为括号之间没有参数,split()方法使用默认的(空白字符)将字符串分割成一个有序的序列,returns作为一个列表对象
['what', 'can', 'I', 'do']
您可以将任何字符串(或计算结果为字符串的对象)传递给方法,a la:
lst=stri.split('a')
这会将 stri
拆分为字符 'a',生成:
['wh', 't c', 'n I do']
在每种情况下,split 方法使用的分隔符都会在此过程中丢失。