如何在创建python字典时填充它



我正在寻找一种方法,在创建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}

相关内容

  • 没有找到相关文章

最新更新