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

Python函数式编程实现按首字母分组单词 合并重复键值为列表

Python函数式实现单词首字母索引的解决方法

核心问题原因

你原有代码的问题在于map会为每个单词生成独立的(首字母, [单词])元组,dict构造器遇到重复键时会直接用后出现的键值对覆盖前序值,因此同首字母的单词无法合并。

函数式实现方案

方案1:使用functools.reduce实现(推荐,时间复杂度O(n))

reduce是函数式编程中用于聚合结果的标准方法,不需要提前排序,直接遍历一次即可完成合并:

from functools import reduce

values = ["Cat" , "Mat" , "Jack", "Cord"]

index = reduce(
    # 每次迭代返回新的字典,避免修改原累积对象
    lambda accumulator, word: {
        **accumulator, 
        word[0]: [*accumulator.get(word[0], []), word]
    },
    values, # 待遍历的原始列表
    {} # 初始累积空字典
)

运行后得到的index完全符合预期输出。

方案2:使用itertools.groupby实现

如果你更习惯分组逻辑,可以用groupby实现,注意groupby只能合并连续的同组元素,因此需要先按首字母对列表排序:

from itertools import groupby

values = ["Cat" , "Mat" , "Jack", "Cord"]
# 按首字母排序
sorted_words = sorted(values, key=lambda x: x[0])
# 分组构造字典
index = {
    first_char: list(word_group) 
    for first_char, word_group in groupby(sorted_words, key=lambda x: x[0])
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:00:04