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

Python字典:如何合并顺序不同的二元组键并累加计数

解决方案:将无序单词对识别为等价键

核心思路是将单词对排序后作为字典的键,这样元素顺序不同的元组会被标准化为同一个键,从而实现等价识别。

一、合并已有字典中的等价键

如果已经有包含无序键的字典,可以通过遍历并标准化键的方式合并计数:

original_dict = {('am', 'and'): 1, ('and', 'am'): 1}
merged_dict = {}

for pair, count in original_dict.items():
    # 对元组排序,生成标准化的等价键
    standardized_pair = tuple(sorted(pair))
    # 累加计数,不存在则默认0
    merged_dict[standardized_pair] = merged_dict.get(standardized_pair, 0) + count

print(merged_dict)  # 输出: {('am', 'and'): 2}

二、修改循环代码,直接生成等价键的字典

修改原循环逻辑,在生成键之前对单词对进行排序,确保无序对被识别为同一个键:

基础实现

word_pair_freq = {}
window = ['am', 'and']  # 替换为你的实际window数据

for word1 in window:
    for word2 in window:
        if word1 != word2:
            # 标准化单词对为排序后的元组
            standardized_pair = tuple(sorted((word1, word2)))
            word_pair_freq[standardized_pair] = word_pair_freq.get(standardized_pair, 0) + 1

print(word_pair_freq)  # 输出: {('am', 'and'): 2}

用collections.defaultdict简化代码

如果频繁处理这类计数,使用defaultdict可以省去get方法的判断:

from collections import defaultdict

word_pair_freq = defaultdict(int)
window = ['am', 'and']

for word1 in window:
    for word2 in window:
        if word1 != word2:
            standardized_pair = tuple(sorted((word1, word2)))
            word_pair_freq[standardized_pair] += 1

print(dict(word_pair_freq))  # 输出: {('am', 'and'): 2}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:15:54