You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在创建Python字典的同时完成填充?

问题:如何在创建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}

请问是否可以不使用两次循环,在创建字典的同时完成填充?


解决方案

当然可以,完全不需要两次循环,以下几种方法都能在一次遍历中完成字典的创建与计数填充:

方法1:单次循环中直接判断键是否存在

遍历字符串时,检查当前字符是否已在字典中:存在则对应值加1,不存在则初始化为1,一次循环完成所有操作:

def letter_count(word):
    letter_dic = {}
    for w in word:
        if w in letter_dic:
            letter_dic[w] += 1
        else:
            letter_dic[w] = 1
    return letter_dic

方法2:用dict.get()简化逻辑

利用字典的get()方法可以省去显式的if判断,该方法会返回键对应的值,若键不存在则返回指定默认值:

def letter_count(word):
    letter_dic = {}
    for w in word:
        letter_dic[w] = letter_dic.get(w, 0) + 1
    return letter_dic

方法3:使用collections.defaultdict

Python标准库collections中的defaultdict可指定默认值类型,遇到不存在的键时会自动用默认值初始化(int类型默认值为0),代码更简洁:

from collections import defaultdict

def letter_count(word):
    letter_dic = defaultdict(int)
    for w in word:
        letter_dic[w] += 1
    # 若需要返回普通字典而非defaultdict,可转换:return dict(letter_dic)
    return letter_dic

方法4:使用collections.Counter(最简便)

collections.Counter是专门为计数场景设计的工具类,直接传入字符串即可得到统计结果(返回的Counter对象继承自dict,可直接当作字典使用):

from collections import Counter

def letter_count(word):
    return Counter(word)

传入示例输入后,得到的结果与你要求的输出完全一致,无需手动编写循环逻辑。


内容的提问来源于stack exchange,提问作者DDela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:10:32