【问题标题】:Passing values to a dict whilst in a for loop in Python在 Python 的 for 循环中将值传递给 dict
【发布时间】:2014-02-28 11:28:11
【问题描述】:

所以,我有一个包含子文件夹的文件夹,每个文件夹包含 40 张图片。

我正在使用以下代码遍历每个子文件夹中的每个图像:

for (dirname, dirnames, filenames) in os.walk('C:\.....')
    for filename in filenames:

图片标题如下:

第一个文件夹: IM-0239-0001.dcm, IM-0239-0002.dcm, IM-0239-0003.dcm…………IM-0239-0040.dcm

第二个文件夹 IM-0248-0001.dcm, IM-0248-0002.dcm, IM-0248-0003.dcm.....IM-0248-0040.dcm

我想要做的是对子文件夹中的 40 个图像中的每一个执行操作,获取这些图像的平均值,然后将此值与子文件夹标识符(例如“0239”)一起导出到外部的字典for 循环。

在移动到下一个子文件夹之前,我无法传递平均值。我的理想解决方案,如果说存在 4 个子文件夹,则将 4 个子文件夹 UI 及其对应的平均值传递给字典。

我尝试使用基于 .split 的函数(如下)与上述循环中的 if 语句相结合来比较部件 [1] 以检测子文件夹结尾:

parts = image_name.split('-')
return '-'.join((parts[1], parts[0], parts[2]))

但我正在寻找一种更pythonic、更时尚、更快捷的方法。

非常感谢您的帮助。

【问题讨论】:

  • 我不知道你所说的“导出这个值”是什么意思。如果您对某些代码有问题,那么将您的代码 except 发布为不起作用的实际代码是没有意义的。
  • 对不起,英语很糟糕。这样更好吗?

标签: python python-2.7 for-loop dictionary


【解决方案1】:

如果我理解正确,您有一个图像目录,其中包含一层包含图像的子目录。您要处理按包含子目录分组的图像。

你可以先读入结构:

#! /usr/bin/python3
import os

tobeprocessed = {}
for curdir, subdirs, files in os.walk ('/home/lorenzo/stackoverflow/images'):
    if not files: continue
    tobeprocessed [curdir] = files

print (tobeprocessed)

现在您有了一个字典,其键是文件夹,其值是包含文件,您可以根据需要对其进行处理。

【讨论】:

  • 这就是我喜欢 stack over flow 的原因,它比我所寻找的更好、更有活力。谢谢!
  • 哈哈,你得到+1是因为你能理解这个问题;)恭喜!
  • 对不起,我写的问题很糟糕!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2011-09-27
  • 1970-01-01
  • 2013-05-28
  • 2021-06-21
  • 2018-10-21
  • 2021-12-05
相关资源
最近更新 更多