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

如何基于列表的列表生成词关联出现频次统计字典?

解决方案

这个需求的核心是遍历每个子列表,对其中的每个单词,统计同子列表内其他单词的出现次数,我们可以通过嵌套循环来实现,步骤清晰且容易理解。

实现代码

# 输入的嵌套列表
word_lists = [['Hello', 'Hi'], ["Hola", "Hi", "Ciao"], ["Ciao", "Hi"]]

# 初始化结果字典,所有唯一单词作为键,对应空字典
result = {}
# 先收集所有唯一单词
all_words = set(word for sublist in word_lists for word in sublist)
for word in all_words:
    result[word] = {}

# 遍历每个子列表
for sublist in word_lists:
    # 遍历子列表中的每个单词作为当前键
    for current_word in sublist:
        # 遍历子列表中的其他单词,统计频次
        for other_word in sublist:
            if current_word != other_word:
                # 如果other_word不在当前键的字典里,初始化为0,再加1
                result[current_word][other_word] = result[current_word].get(other_word, 0) + 1

print(result)

代码解释

  1. 初始化结果字典:首先通过集合推导式收集所有唯一单词,为每个单词创建一个空的子字典,用来存储同列表内其他单词的频次。
  2. 三层循环处理:
    • 最外层循环遍历每个子列表;
    • 中间层循环以子列表中的每个单词作为当前统计的键;
    • 最内层循环遍历子列表中的其他单词,跳过自身后,在当前键的子字典中累加对应单词的计数(用dict.get()方法可以优雅处理键不存在的情况,默认值为0)。
  3. 输出结果:运行代码后会得到你期望的字典:
    {'Hello': {'Hi': 1}, 'Hi': {'Hello': 1, 'Hola': 1, 'Ciao': 2}, 'Hola': {'Hi': 1, 'Ciao': 1}, 'Ciao': {'Hola': 1, 'Hi': 2}}
    

如果子列表存在重复单词的场景(比如某个子列表是["Hi", "Hi", "Ciao"]),这个实现也能正确统计——比如该子列表中Hi对应的Ciao计数会加2,Ciao对应的Hi计数会加2,完全符合需求逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:22:22