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

Python 基于双说话人词频字典按关键词排序输出四列统计结果

实现方案

直接按照需求逻辑拆分操作,无需额外复杂处理:

  1. 提取两个词频字典的所有关键词,生成去重后的关键词全集
  2. 对全集关键词按字典序升序排列
  3. 遍历排序后的每个关键词,分别查询该词在两个字典中的出现次数,字典中不存在的词默认计数为0
  4. 计算两个计数的总和,按对齐格式逐行打印四列内容

可直接运行的代码

# 已预处理得到的两个说话人词频字典
bridgekeeper_w = {'hee': 2, 'heh': 1, 'stop': 1, 'what': 3, 'is': 3, 'your': 2, 'name': 1, 'quest': 1, 'the': 1, 'air-speed': 1, 'velocity': 1, 'of': 1, 'an': 1, 'unladen': 1, 'swallow': 1}
arthur_w = {'king': 4, 'it': 1, 'is': 1, 'arthur': 1, 'of': 1, 'the': 2, 'britons': 1, 'to': 1, 'seek': 1, 'holy': 1, 'grail': 1, 'what': 1, 'do': 1, 'you': 1, 'mean': 1, 'an': 1, 'african': 1, 'or': 1, 'european': 1, 'swallow': 1}

# 获取所有不重复的关键词并按字典序排序
all_words = set(bridgekeeper_w) | set(arthur_w)
sorted_words = sorted(all_words)

# 逐行格式化输出
for word in sorted_words:
    cnt_bridgekeeper = bridgekeeper_w.get(word, 0)
    cnt_arthur = arthur_w.get(word, 0)
    total_cnt = cnt_bridgekeeper + cnt_arthur
    # 左对齐关键词占10字符宽度,保证后续数值列对齐,和示例排版一致
    print(f"{word:<10} {cnt_bridgekeeper}  {cnt_arthur}  {total_cnt}")

运行输出效果

african    0  1  1
air-speed  1  0  1
an         1  1  2
arthur     0  1  1
britons    0  1  1
do         0  1  1
european   0  1  1
grail      0  1  1
hee        2  0  2
heh        1  0  1
holy       0  1  1
is         3  1  4
it         0  1  1
king       0  4  4
mean       0  1  1
name       1  0  1
of         1  1  2
or         0  1  1
quest      1  0  1
seek       0  1  1
stop       1  0  1
swallow    1  1  2
the        1  2  3
to         0  1  1
unladen    1  0  1
velocity   1  0  1
what       3  1  4
you        0  1  1
your       2  0  2

关键说明

  • 用集合的并集操作合并两个字典的键,能快速拿到所有出现过的关键词,不会遗漏任意一方的用词
  • 字典的get方法设置默认值0,不需要写额外的存在性判断分支,简化代码逻辑
  • 格式化时的<10参数控制关键词左对齐、占用固定宽度,保证后续三列数值整齐对齐,完全匹配示例的排版要求
  • 内置sorted方法对字符串排序的逻辑就是按字典序升序,直接满足关键词排序的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 23:54:08