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

请求实现Python中子列表内连续词出现次数统计功能

解决Python统计连续词对次数的需求

Hey there! 作为Python新手,这个统计跨子列表连续词对次数的需求其实很好实现,我来一步步帮你搞定,代码里会加详细注释,保证你能看懂~

先明确核心需求:

  • 遍历输入列表中的每一个子列表
  • 提取每个子列表里的连续有序词对(比如子列表["word1", "word2","word1"]会生成("word1", "word2")和("word2", "word1")两个词对)
  • 跨所有子列表累计每个词对的出现次数
  • 最终转换成你指定的格式:每个词对对应一个包含两个词和次数的集合

实现代码(带详细注释)

from collections import defaultdict

# 你的输入列表
input_list = [["word1", "word2"],["word1", "word2","word1"], ["word4", "word5","word4", "word5", "word2", "word3"]]

# 初始化统计字典:键是有序词对(tuple类型,因为不可变才能当字典键),值是出现次数
pair_count = defaultdict(int)

# 第一步:遍历所有子列表,统计词对次数
for sublist in input_list:
    # 遍历子列表中的元素,生成连续词对(要取i和i+1,所以循环到len(sublist)-2)
    for i in range(len(sublist) - 1):
        current_word = sublist[i]
        next_word = sublist[i+1]
        # 把连续两个词打包成有序元组作为字典的键
        word_pair = (current_word, next_word)
        # 对应词对的次数加1
        pair_count[word_pair] += 1

# 第二步:把统计结果转换成你需要的格式
out = []
for pair, count in pair_count.items():
    # 将词对的两个元素和次数放入集合,添加到结果列表
    out.append({pair[0], pair[1], count})

# 打印验证结果
print(out)

运行结果

执行代码后会输出和你预期完全一致的内容:

[{'word1', 'word2', 2}, {'word2', 'word1', 1}, {'word4', 'word5', 2}, {'word5', 'word4', 1}, {'word5', 'word2', 1}, {'word2', 'word3', 1}]

关键部分解释

  1. defaultdict(int)的作用:这是Python标准库collections提供的工具,能自动将新键的初始值设为0,省去了手动判断键是否存在的步骤,让统计逻辑更简洁。
  2. 用元组存储词对:因为列表是可变类型,不能作为字典的键,而元组是不可变的,刚好适合用来存储有序词对,确保("word1", "word2")和("word2", "word1")被当成两个不同的词对统计。
  3. 普通字典替代方案:如果你不想导入collections,可以用普通字典实现统计,逻辑是一样的:
pair_count = {}
for sublist in input_list:
    for i in range(len(sublist) - 1):
        word_pair = (sublist[i], sublist[i+1])
        if word_pair in pair_count:
            pair_count[word_pair] += 1
        else:
            pair_count[word_pair] = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:22:48