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

如何基于参考列表匹配与长度,为字典列表填充对应0值?

按指定样本结构填充字典列表的匹配元素

解决方案代码

data = [{'item': ['cat', 'bat'], 'val': [2, 4]},
        {'item': ['fat'], 'val': [23]},
        {'item': ['cat', 'bat', 'mat'], 'val': [6, 9, 8]}
       ]

sample = ['aaa', 'aa', 'cat', 'bb', 'fat', 'bbb', 'bat', 'bbbb', 'mat']

# 建立样本元素到索引的映射,用于快速定位
sample_index_map = {item: idx for idx, item in enumerate(sample)}

for entry in data:
    # 初始化与样本长度一致的全0列表
    new_item = [0] * len(sample)
    new_val = [0] * len(sample)
    
    # 遍历当前条目的item和对应val,填充到对应位置
    for item, val in zip(entry['item'], entry['val']):
        if item in sample_index_map:
            pos = sample_index_map[item]
            new_item[pos] = item
            new_val[pos] = val
    
    # 更新原字典的item和val字段
    entry['item'] = new_item
    entry['val'] = new_val

# 查看结果
print(data)

思路说明

  1. 建立索引映射:用字典推导式把sample里的每个元素和它的索引绑定,这样可以O(1)时间找到任意元素在样本中的位置,解决了你之前循环追加0无法定位前置匹配项的问题。
  2. 初始化全0列表:每个字典的item和val都先创建和sample长度一致的全0列表,保证结构对齐。
  3. 填充匹配元素:遍历原字典的item和val对应对,通过映射找到位置后替换0为对应值,非匹配元素的位置保持0不变。

运行上述代码后,输出结果完全符合你的期望。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:01:26