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

Python中如何高效将字符串列表映射到两组数值的全组合嵌套字典

问题描述

给定以下列表(实际规模更大,此处为简化示例):

d = ["a", "b", "c", "d"]
p = [1,2,3,4]
a = [1,2,3,4]

需要将d中的每个字母映射到p与a的所有组合,生成类似如下格式的结构:

{0: {'a': {'p':1, 'a':1}, 'b': {'p':1, 'a':1}, 'c': {'p':1, 'a':1}, 'd': {'p':1, 'a':1}}}

也可以用列表存储,以索引作为组合序号,列表元素为字母与p、a组合字典的完整映射。

最初编写的代码仅能生成单个字母对应组合的字典,无法得到包含所有字母的完整字典;虽写出嵌套循环的可行代码,但因实际列表规模大,该方法效率低下,希望找到更高效的实现方式。


高效实现方案

利用Python标准库的itertools.product生成p和a的笛卡尔积,结合推导式构建目标结构,这种方式基于C底层实现,比纯Python嵌套循环效率高得多,适合大规模数据场景。

代码实现

字典形式输出(键为组合序号)

import itertools

d = ["a", "b", "c", "d"]
p = [1,2,3,4]
a = [1,2,3,4]

# 生成p和a的所有组合
pa_pairs = itertools.product(p, a)

# 构建目标字典
result_dict = {
    idx: {char: {'p': p_val, 'a': a_val} for char in d}
    for idx, (p_val, a_val) in enumerate(pa_pairs)
}

列表形式输出(索引为组合序号)

import itertools

d = ["a", "b", "c", "d"]
p = [1,2,3,4]
a = [1,2,3,4]

pa_pairs = itertools.product(p, a)

# 构建目标列表
result_list = [
    {char: {'p': p_val, 'a': a_val} for char in d}
    for p_val, a_val in pa_pairs
]

效率优势说明

  • itertools.product是标准库中优化过的工具,生成组合的速度远快于手动嵌套循环。
  • 推导式的执行效率高于逐元素添加的循环逻辑,内存占用更紧凑。
  • 全程无冗余中间变量,避免额外性能损耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:52:24