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

如何按Filename匹配将list_b的Speed字段合并到list_a字典列表

实现两个字典列表按Filename匹配追加Speed字段

需求说明

  • 输入为两个存储字典的列表list_a、list_b
  • 匹配规则:仅当两个列表中字典的Filename字段值完全一致时,将list_b对应字典的Speed字段追加到list_a的匹配字典中
  • 输出要求:处理后的list_a中每个字典需包含4个键值对

示例输入

list_a 原始数据

from pandas import Timestamp
list_a =[{'Filename': '20211004T102400622.jpg',
  'convertedDate': Timestamp('2021-10-04 10:24:00'),
  'path_name': '/content/drive/My Drive/train later/Continuous Running Time/Front Camera/20211004T102400622.jpg'},
 {'Filename': '20211004T102403688.jpg',
  'convertedDate': Timestamp('2021-10-04 10:24:03'),
  'path_name': '/content/drive/My Drive/train later/Continuous Running Time/Front Camera/20211004T102403688.jpg'},
 {'Filename': '20211004T102403684.jpg',
  'convertedDate': Timestamp('2021-10-04 10:24:03'),
  'path_name': '/content/drive/My Drive/train later/Continuous Running Time/Front Camera/20211004T102403684.jpg'},
 {'Filename': '20211004T102406737.jpg',
  'convertedDate': Timestamp('2021-10-04 10:24:06'),
  'path_name': '/content/drive/My Drive/train later/Continuous Running Time/Front Camera/20211004T102406737.jpg'},
 {'Filename': '20211004T102409773.jpg',
  'convertedDate': Timestamp('2021-10-04 10:24:09'),
  'path_name': '/content/drive/My Drive/train later/Continuous Running Time/Front Camera/20211004T102409773.jpg'}]

list_b 原始数据

list_b = [{'Filename': '20211004T102400622.jpg',
  'Speed': '0.3',
  'Time': '2021-10-04T10:24:00.622Z'},
 {'Filename': '20211004T102403684.jpg',
  'Speed': '0.2',
  'Time': '2021-10-04T10:24:03.684Z'},
 {'Filename': '20211004T102403688.jpg',
  'Speed': '0.2',
  'Time': '2021-10-04T10:24:03.688Z'},
 {'Filename': '20211004T102406737.jpg',
  'Speed': '0.0',
  'Time': '2021-10-04T10:24:06.737Z'},
 {'Filename': '20211004T102409773.jpg',
  'Speed': '0.1',
  'Time': '2021-10-04T10:24:09.773Z'}]

实现代码

推荐先将list_b转为Filename映射Speed的字典,避免嵌套循环带来的性能损耗,查找匹配项的时间复杂度为O(1),整体处理效率更高。

方式1:直接修改原list_a

# 构建Filename到Speed的映射
speed_mapping = {b_item['Filename']: b_item['Speed'] for b_item in list_b}

# 遍历list_a追加匹配到的Speed字段
for a_item in list_a:
    file_name = a_item['Filename']
    if file_name in speed_mapping:
        a_item['Speed'] = speed_mapping[file_name]

方式2:不修改原数据,生成新列表

如果需要保留原始list_a不变,可以用拷贝的方式生成新列表:

speed_mapping = {b_item['Filename']: b_item['Speed'] for b_item in list_b}
new_list_a = []

for a_item in list_a:
    processed_item = a_item.copy()
    file_name = processed_item['Filename']
    if file_name in speed_mapping:
        processed_item['Speed'] = speed_mapping[file_name]
    new_list_a.append(processed_item)

处理结果

针对给出的示例数据,所有条目的Filename都能完全匹配,处理后每个字典都会包含Filename、convertedDate、path_name、Speed4个键,符合需求。如果存在list_a里的文件名在list_b中找不到对应项的情况,对应条目不会添加Speed字段,如果需要给这类条目填充默认值,可以在判断分支加else逻辑赋值即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:36:18