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

如何从字典提取指定键与索引值?代码错误修正方案

问题分析与解决方案

你当前代码的核心问题是直接引用了原列表的内存对象:当你执行self.tc_wfiles[k] = incoming_files[k]时,并没有创建新列表,只是把原列表的引用赋值给了新字典的键。后续的append操作都是在修改这个原列表本身,所以最终新字典里的内容自然是原完整列表加上你追加的元素,这和你想要的“仅保留指定索引元素”完全不符。

修正后的代码

下面是调整后的代码,直接创建一个仅包含目标元素的新列表,避免修改原数据:

abcdef = ('ABC', 'DEF')
incoming_files = {'0409-01:51:02.577':['29', '30', '37', '5463', '84338', 'ABCD', 'x-abc1', 'xxx', '1A234BCD5EFG67890H1234IJ', 'ABCDEF', '02DA', '123456789', '1234567890', '1234567890', '1A234BCD5', '911', '1A234BCD5EF', '0', '12', '7', '1', '_', 'XY', 'ABC', '1A234BCDEF', 'ABCDEF', '1A234BCD', '1A234BCD', '1A234BCDDFW', 'L', '1']}
tc_wfiles = {}
for k, v in incoming_files.items():
    if any(c in v for c in abcdef):
        try:
            # 按你需要的顺序定义目标索引
            target_indices = [5, 12, 28, 25, 22, 23, 9]
            # 列表推导式提取指定索引的元素,生成新列表
            extracted_values = [v[idx] for idx in target_indices]
            # 将键与新列表存入目标字典
            self.tc_wfiles[k] = extracted_values
        except IndexError:
            # 可选:处理索引超出列表长度的异常,比如打印警告
            print(f"Warning: Missing expected element for key {k}")
            pass

额外优化(可选)

如果你希望新字典的值是语义更清晰的键值对(而非纯列表),可以改成下面的写法,给每个提取的元素命名:

# 替换循环内的try块内容
extracted_dict = {
    'code': v[5],
    'id_12': v[12],
    'fw_identifier': v[28],
    'ref_code': v[25],
    'xy_tag': v[22],
    'abc_tag': v[23],
    'main_code': v[9]
}
self.tc_wfiles[k] = extracted_dict

这样后续使用这些数据时,可读性会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:56:15