python - 使用Python中的循环将项目添加到现有字典中

标签 python

我希望输出采用以下形式:

dic = {size1:file/path1, size2:file/path2}

但是我在每个组合的单独字典中得到的内容,例如:

{size1:file/path1}
{size2:file/path2, size1:file/path1, ...}

这是我想出的代码,任何人都可以纠正我的代码。

import os, subprocess, re, sys
records = {}
out = sys.stdout
with open('PythonFilesInMac.txt', 'w') as outfile:
     sys.stdout = outfile
     for cdir, dir, files in os.walk(r'/Users'):
         for file in files:
             if file.endswith('.py'):
                filename = os.path.join(cdir, file)
                size = os.path.getsize(filename)
                records[size] = filename #records = {size:filename}
                print records             #how do I use dict.update() here?   
     sys.stdout = out

最佳答案

您的代码中有两个问题。第一个是你应该将 print 放在循环之外。第二个是可能有两个文件大小相同,最好将它们放在一个列表中。

import os, subprocess, re, sys
records = {}
out = sys.stdout
with open('PythonFilesInMac.txt', 'w') as outfile:
     sys.stdout = outfile
     for cdir, dir, files in os.walk(r'/Users'):
         for file in files:
             if file.endswith('.py'):
                filename = os.path.join(cdir, file)
                size = os.path.getsize(filename)
                records.setdefault(size, []).append(filename)
     print records  
     sys.stdout = out

关于python - 使用Python中的循环将项目添加到现有字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30283629/

相关文章:

python - genfromtxt() 中的 NumPy dtype 问题,将字符串读取为 bytestring

python - 我如何检测我的窗口何时被 wxPython 最小化?

python - Django - urls.py 中的静态文件夹映射

python - Django:如何从 .css 文件链接到静态文件目录?

python - 使用docker时无法使用pipenv安装软件包

python - 将 .ui 转换为包含升级框架的 .py 文件

python - 使用 UPDATE ... RETURNING 的多个数据库连接,似乎不更新任务表中的行

python - 将日期时间插入 MySql 数据库

python - Pandas Dataframe Resample OHLC 开盘价错误

python - 集合上最小、最大的时间复杂度