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

Python 如何为字典列表各字典正确添加os.listdir对应的image_name键值

原代码错误原因

你目前的嵌套循环逻辑会直接导致所有字典的image_name被反复覆盖:

  • 外层每拿到一个水果字典,内层就会遍历完os.listdir()返回的所有文件名,把每个文件名挨个赋值给这个字典的image_name字段
  • 每次赋值都会覆盖上一次的值,等内层循环走完,当前字典的image_name就停在列表最后一个元素010.txt
  • 所有字典都重复这个流程,最终所有字典的image_name都统一成了最后一个文件名。
正确实现代码

不需要嵌套循环,只要把两个列表按位置一一配对赋值即可:

import os

# 提前获取目录下的文件列表,避免循环内反复调用导致的顺序波动
image_file_list = os.listdir(dir_image)
# 强制按文件名的数字顺序排序,保证顺序严格对应001.txt ~ 010.txt,避免文件系统返回乱序
image_file_list = sorted(image_file_list)

# 用zip将两个等长序列按位置配对,直接给字典赋值
for fruit_item, img_name in zip(list_of_dictionary, image_file_list):
    fruit_item["image_name"] = img_name
注意事项
  • 保证list_of_dictionary的长度和image_file_list的长度完全一致,zip()会在较短的序列遍历完成时自动终止循环,长度不匹配会导致部分字典无法加上image_name字段
  • 如果目录里存在无关的非图片文件,需要提前用列表推导式过滤掉不需要的文件,避免把非图片文件的名称赋值到字段里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 11:45:04