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

如何用Python实现:从数组中找和为目标值的元素并返回索引-值字典

解决方案

要实现返回包含元素索引与值的字典,核心是保留元素的索引信息——你原来的代码直接对数组元素做组合,丢失了索引,所以没法构建目标字典。下面是修改后的代码:

import itertools

def findWithSum(arr, value, n=2):
    # 生成索引的组合,而不是元素的组合
    index_combinations = itertools.combinations(range(len(arr)), n)
    for indices in index_combinations:
        # 通过索引获取对应元素,计算和
        elements = [arr[i] for i in indices]
        if sum(elements) == value:
            # 构建{索引:元素值}的字典并返回
            return {i: arr[i] for i in indices}
    # 如果没找到符合条件的组合,返回空字典或None,根据需求调整
    return {}

arr = [1, 2, 3]
print(findWithSum(arr, 3, 2))  # 输出: {0: 1, 1: 2}

关键修改说明

  • 用itertools.combinations(range(len(arr)), n)生成索引的组合,而不是直接对数组元素组合,这样能拿到每个元素的位置信息。
  • 找到符合和为目标值的索引组合后,用字典推导式{i: arr[i] for i in indices}直接构建需要的字典结构。
  • 如果需要返回所有符合条件的组合(而不仅仅是第一个),可以把结果收集到列表中返回,比如:
    def findWithSum(arr, value, n=2):
        index_combinations = itertools.combinations(range(len(arr)), n)
        result = []
        for indices in index_combinations:
            elements = [arr[i] for i in indices]
            if sum(elements) == value:
                result.append({i: arr[i] for i in indices})
        return result
    
    调用后会返回所有符合条件的字典组成的列表,比如如果数组是[1,2,0,3],找和为3的两个数,会返回[{0:1,1:2}, {0:1,3:3}, {2:0,3:3}]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:01:00