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

Python中基于两个字典生成无重复三元组合的term_wMca实现方法

实现无重复元素的三元组合计算

要实现仅保留三元组元素完全不重复的计算逻辑,只需在遍历过程中加入重复元素的过滤判断,以下是具体实现:

核心思路

  • 从字典a取元素k,从字典c取两个元素j、l,要求k、j、l三者两两互不相同
  • 直接通过等值判断过滤重复元素,或利用集合特性快速校验
  • 适配任意规模的输入字典,自动排除含重复元素的组合

基础修改版代码

import sympy as sp

a = {'A': 1}
c = {'B': 1, 'C': 1}
term_wMca = 0

# 获取字典键集合,方便重复判断
keys_a = set(a.keys())
keys_c = set(c.keys())

for k in keys_a:
    for j in keys_c:
        # 跳过与k重复的j
        if j == k:
            continue
        for l in keys_c:
            # 跳过与k或j重复的l
            if l == k or l == j:
                continue
            # 构造符号项并累加
            x_k = sp.symbols(f'x{k}')
            x_j = sp.symbols(f'x{j}')
            x_l = sp.symbols(f'x{l}')
            w_term = sp.symbols(f'W_{l}{j}{k}')
            term_wMca += x_k * x_j * x_l * w_term

print(term_wMca)

优化适配大字典版本

当a或c包含更多键时,可借助itertools.permutations直接生成c中所有不重复的有序元素对,简化代码逻辑:

import sympy as sp
from itertools import permutations

a = {'A': 1, 'D': 1}
c = {'B': 1, 'C': 1, 'E': 1}
term_wMca = 0

keys_a = set(a.keys())
keys_c = set(c.keys())

for k in keys_a:
    # 生成c中所有长度为2的不重复元素排列(顺序不同算独立项)
    for j, l in permutations(keys_c, 2):
        if k != j and k != l:
            x_k = sp.symbols(f'x{k}')
            x_j = sp.symbols(f'x{j}')
            x_l = sp.symbols(f'x{l}')
            w_term = sp.symbols(f'W_{l}{j}{k}')
            term_wMca += x_k * x_j * x_l * w_term

print(term_wMca)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:55:18