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

Python中基于匹配模式拼接字典列表字符串的问题修正

解决Python字典列表中按规则拼接'b'值的问题

需求说明

在字典列表中对每个字典的'b'键值进行处理:

  • 若字典的'b'包含'ABC':将后续所有**不包含'ABC'**的字典的'b'值拼接到该字典的'b'字段,其余键(如'a'、'c')保留该字典的原始值;遇到下一个含'ABC'的字典时,先将当前拼接好的字典存入结果,再处理新目标
  • 若字典的'b'不包含'ABC':直接保留该字典到结果

样本数据

L = [{'a': 0, 'b': 'radndaos43', 'c': 234},
     {'a': 1, 'b': 'lABChfgdd65a', 'c': 90011},
     {'a': 2, 'b': 'ddasda423sdABC', 'c': 324},
     {'a': 3, 'b': 'ddas236dasd', 'c': 123},
     {'a': 4, 'b': 'ddasd234asdABC', 'c': 900},
     {'a': 5, 'b': 'ddasd678hfasd', 'c': 342},
     {'a': 6, 'b': 'ddasd234dasdasdABC', 'c': 567}]

现有代码问题

当前代码运行后缺失第1个('a':0)和第6个('a':6)元素,现有代码如下:

updated_list = []
dict_holder = {}
for i in range(len(L)):
    if 'ABC' in L[i]['b'] and not dict_holder:
        dict_holder.update(L[i])
    elif 'ABC' not in L[i]['b'] and dict_holder:
        dict_holder.update({'b': dict_holder['b'] + ' ' + L[i]['b']})
    elif 'ABC' in L[i]['b'] and dict_holder:
        updated_list.append(dict_holder)
        dict_holder = {}
        dict_holder.update(L[i])

print(updated_list)

修正后的代码

updated_list = []
dict_holder = {}
for item in L:
    if 'ABC' in item['b']:
        if dict_holder:
            # 先把之前拼接好的存入结果
            updated_list.append(dict_holder)
            dict_holder = {}
        # 初始化新的目标字典
        dict_holder = item.copy()
    else:
        if dict_holder:
            # 拼接到当前活跃的字典
            dict_holder['b'] += ' ' + item['b']
        else:
            # 无活跃字典,直接加入结果
            updated_list.append(item)
# 循环结束后,把最后剩下的活跃字典加入结果
if dict_holder:
    updated_list.append(dict_holder)

print(updated_list)

修正说明

  1. 新增**不包含'ABC'且无活跃dict_holder**的处理逻辑:直接将该字典加入结果列表,解决了第1个元素缺失的问题
  2. 循环结束后新增判断:将最后未存入的dict_holder(即第6个元素)加入结果,解决了最后一个含'ABC'的元素缺失问题
  3. 改用直接遍历列表元素的方式,替代按索引遍历,代码更简洁易读

期望输出

[{'a': 0, 'b': 'radndaos43', 'c': 234},
{'a': 1, 'b': 'lABChfgdd65a', 'c': 90011}, 
{'a': 2, 'b': 'ddasda423sdABC ddas236dasd','c': 324},
{'a': 4, 'b': 'ddasd234asdABC ddasd678hfasd', 'c': 900},
{'a': 6, 'b': 'ddasd234dasdasdABC', 'c': 567}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:55:18