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

如何根据字典键名自动分组生成对应新字典?

实现思路与示例代码

核心思路拆解

  • 提取分组前缀:从原字典的键中分离出分组标识(比如Industry1中的Industry),可以通过字符串遍历找第一个数字的位置,或者用正则表达式匹配前缀部分。
  • 构建分组容器:创建存储各分组的字典(或直接生成独立变量),每个分组对应一个空字典,用来存放对应键值对。
  • 分配键值对:遍历原字典的所有键值对,根据前缀将其归入对应的分组字典中。

具体实现示例

方式1:用字典统一管理所有分组

这种方式更安全易维护,避免创建过多全局变量:

import re

A = {
    "Industry1": 1,
    "Industry2": 1,
    "Industry3": 1,
    "Customer1": 1,
    "Customer2": 1,
    "LocalShop1": 1,
    "LocalShop2": 1,
}

# 初始化分组字典
groups = {}
for key, value in A.items():
    # 用正则匹配数字前的所有非数字字符作为前缀
    prefix = re.match(r'^\D+', key).group()
    # 前缀不存在则创建空字典
    if prefix not in groups:
        groups[prefix] = {}
    # 将键值对加入对应分组
    groups[prefix][key] = value

# 输出每个分组
for name, group_dict in groups.items():
    print(f"{name} = {group_dict}")

方式2:生成独立的全局变量

如果一定要生成Industry = {...}这种独立变量,可以用globals()实现(注意:仅在信任的代码环境中使用,避免安全风险):

import re

A = {
    "Industry1": 1,
    "Industry2": 1,
    "Industry3": 1,
    "Customer1": 1,
    "Customer2": 1,
    "LocalShop1": 1,
    "LocalShop2": 1,
}

for key, value in A.items():
    prefix = re.match(r'^\D+', key).group()
    # 全局变量中无该分组则初始化空字典
    if prefix not in globals():
        globals()[prefix] = {}
    globals()[prefix][key] = value

# 验证结果
print(Industry)
print(Customer)
print(LocalShop)

注意点

  • 你给出的预期输出中LocalShop2写成了LolcalShop2,这应该是笔误,代码会保留原字典的正确键名。
  • 如果分组前缀不是通过数字区分,可调整前缀提取逻辑,比如按特定分隔符拆分,或预先定义前缀列表匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:56:04