我正在寻找一种方法,在创建python字典的同时填充它
我有这个简单的方法,首先创建一个所有键值为0的字典,然后再次读取字符串以填充它
def letter_count(word):
letter_dic = {}
for w in word:
letter_dic[w] = 0
for w in word:
letter_dic[w] += 1
return letter_dic
上面的方法应该计算给定字符串
中每个字母的所有出现次数输入:
"leumooeeyzwwmmirbmf"
输出:
{'l': 1, 'e': 3, 'u': 1, 'm': 4, 'o': 2, 'y': 1, 'z': 1, 'w': 2, 'i': 1, 'r': 1, 'b': 1, 'f': 1}
是否有一种不使用两个循环同时创建和填充字典的形式?
是的!最python化的方法是使用Counter
from collections import Counter
letter_dic = Counter(word)
但是还有其他选项,比如纯python:
for w in word:
if w not in letter_dic:
letter_dic[w] = 0
letter_dic[w] += 1
或defaultdict。在这里传递一个可调用对象,在第一次键访问时,它将创建具有特定值的键:
from collections import defaultdict
letter_dic = defaultdict(int)
for w in word:
letter_dic[w] += 1
您可以使用字典推导式,例如
x = "leumooeeyzwwmmirbmf"
y = {l: x.count(l) for l in x}
您可以使用Counter fromcollections
:
from collections import Counter
src = "leumooeeyzwwmmirbmf"
print(dict(Counter(src))
给了预期
{'l': 1, 'e': 3, 'u': 1, 'm': 4, 'o': 2, 'y': 1, 'z': 1, 'w': 2, 'i': 1, 'r': 1, 'b': 1, 'f': 1}