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

如何将带指定前缀的列表转换为目标映射字典?

将带前缀的列表转换为指定格式的字典

已知前缀的解决方案

如果你已经明确知道所有前缀,可以直接遍历前缀列表,构建目标字典:

table_ids = ["apple_1", "apple_2", "apple_3", "banana_1", "banana_2", "banana_3", "water_melon_1", "water_melon_2", "water_melon_3"]
prefixes = ["apple_", "banana_", "water_melon_"]

# 基础循环写法
result = {}
for prefix in prefixes:
    key = prefix.rstrip('_')  # 把前缀末尾的下划线去掉作为字典键
    # 过滤匹配前缀的元素,截取前缀后的部分
    result[key] = [item[len(prefix):] for item in table_ids if item.startswith(prefix)]

print(result)

或者用更简洁的字典推导式:

result = {
    prefix.rstrip('_'): [item[len(prefix):] for item in table_ids if item.startswith(prefix)]
    for prefix in prefixes
}

自动提取前缀的灵活方案

如果不想手动维护前缀列表,可以通过字符串分割自动识别前缀(适用于所有元素都是前缀_数字的格式):

from collections import defaultdict

table_ids = ["apple_1", "apple_2", "apple_3", "banana_1", "banana_2", "banana_3", "water_melon_1", "water_melon_2", "water_melon_3"]

result = defaultdict(list)
for item in table_ids:
    # 从右侧分割一次下划线,分离前缀主体和数字部分
    prefix_part, num = item.rsplit('_', 1)
    result[prefix_part].append(f'_{num}')  # 拼接成目标格式的后缀

# 可选:转换为普通字典
result = dict(result)
print(result)

原代码问题说明

你之前的列表推导式仅完成了按前缀分组原字符串的工作,但没有处理两个核心需求:

  1. 将前缀转换为字典的键(去掉末尾下划线)
  2. 截取每个元素的后缀部分(保留_数字的格式)
    上面的方案补全了这两个步骤,就能得到你想要的字典结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:55:17