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

如何匹配双列表元素生成结构化新列表并格式化字符串输出?

解决方案

问题回顾

给定列表:

A_list = ['A', 'A', 'B', ['C', 'D'] ]
B_list = ['A1', 'W5', 'X6', 'A2', 'A3', 'T5', 'B0', 'Z9', 'C1', 'W3', 'D1']
C_list = []
string_list = ["{0} in Alpha", "{0} in Apple", "{0} in Bee", "{0} in Cheese and {1} in Dice"]

需要完成两个核心任务:

  • 生成与A_list结构一致的C_list,其中每个元素是B_list中对应前缀的匹配项
  • 用string_list的模板结合C_list生成格式化输出

步骤1:构建高效的前缀映射

先把B_list中的元素按前缀(第一个字符)分组,避免重复遍历查找,提升效率:

from collections import defaultdict

# 构建前缀到对应元素列表的映射
prefix_map = defaultdict(list)
for item in B_list:
    prefix = item[0]
    prefix_map[prefix].append(item)

步骤2:递归生成结构一致的C_list

通过递归处理A_list的嵌套结构,逐个匹配并取出对应元素:

def process_item(a_item, prefix_map):
    if isinstance(a_item, list):
        # 递归处理子列表中的每个元素
        return [process_item(sub, prefix_map) for sub in a_item]
    else:
        # 取出对应前缀的第一个可用元素(pop(0)保证按B_list中的顺序匹配)
        return prefix_map[a_item].pop(0)

# 生成目标C_list
C_list = []
for item in A_list:
    result = process_item(item, prefix_map)
    C_list.append(result)

执行后C_list的结果为:['A1', 'A2', 'A3', 'B0', ['C1', 'D1']],完全符合结构要求。

步骤3:生成格式化字符串输出

根据string_list的模板,结合C_list的元素逐一格式化:

# 生成输出列表
formatted_output = []
# 处理前三个单元素模板
for idx in range(3):
    formatted_output.append(string_list[idx].format(C_list[idx]))
# 处理第四个嵌套元素的模板(用*解包子列表)
formatted_output.append(string_list[3].format(*C_list[3]))

# 打印结果
for line in formatted_output:
    print(line)

最终输出:

A1 in Alpha
A2 in Apple
A3 in Bee
C1 in Cheese and D1 in Dice

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:55:14