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

如何基于network键值定制修改字典元素生成product字段

用字典映射规则批量处理字典列表字段

现有列表list_a,每个元素是包含title、network字段的字典。需求是根据network的不同取值,对title执行对应字符串处理(比如network_one对应split('(')[0].title().rstrip(),network_two对应split('-')[0].lower().rstrip()),生成新的product字段。已知用if-else可以实现,但希望用字典管理规则以适配大量数据场景,当前尝试的keys_dict写法有误,寻求正确实现方式。

预期输出

l = [
    {'title': 'some product name ()', 'network': 'network_one', 'product': 'Some product name'},
    {'title': 'another product name - some more', 'network': 'network_two', 'product': 'another product name'}
]

当前错误代码

list_a = [
    {'title': 'some product name ()', 'network': 'network_one'},
    {'title': 'another product name - some more', 'network': 'network_two'}
]

keys_dict = {
    'network_one': items['title'].split('(')[0].title().rstrip(), # 这里错误,此时items未定义
    'network_two': items['title'].split('-')[0].lower().rstrip(),
}

l = []
for items in list_a:
    if items['network'] in keys_dict:
        items['product'] = keys_dict[items['network']]
        l.append(items)
print(l)

正确实现方式

错误原因在于keys_dict中直接写了依赖items的表达式——定义字典时items还未遍历到,根本不存在。正确的做法是把每个处理逻辑包装成函数,让字典存储的是函数而非直接计算的结果,遍历的时候再传入当前元素的title执行计算。

完整代码

list_a = [
    {'title': 'some product name ()', 'network': 'network_one'},
    {'title': 'another product name - some more', 'network': 'network_two'}
]

# 规则字典:key是network值,value是接收title参数的处理函数
process_rules = {
    'network_one': lambda title: title.split('(')[0].title().rstrip(),
    'network_two': lambda title: title.split('-')[0].lower().rstrip()
}

result = []
for item in list_a:
    network = item['network']
    if network in process_rules:
        # 取出对应函数,传入title计算product值
        item['product'] = process_rules[network](item['title'])
        result.append(item)

print(result)

扩展说明

如果处理逻辑比较复杂,不适合用lambda表达式,可以定义普通函数:

def process_network_one(title):
    return title.split('(')[0].title().rstrip()

def process_network_two(title):
    return title.split('-')[0].lower().rstrip()

process_rules = {
    'network_one': process_network_one,
    'network_two': process_network_two
}

这种方式更易维护,适合复杂的字符串处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:27:30