Python遍历目录并更新字典

Python遍历目录并更新字典,python,for-loop,dictionary,nested-loops,Python,For Loop,Dictionary,Nested Loops,当我想添加所有文件夹时,字典“d”只包含最新迭代的子文件夹键和值。我不明白为什么我的字典在文件夹更改后从空字典开始更新 import os from os.path import join for (dirname, dirs, files) in os.walk('.'): d = dict() for filename in files: if filename.endswith('.txt') : value_thefile = o

当我想添加所有文件夹时,字典“d”只包含最新迭代的子文件夹键和值。我不明白为什么我的字典在文件夹更改后从空字典开始更新

import os
from os.path import join

for (dirname, dirs, files) in os.walk('.'):
    d = dict()
    for filename in files:
        if filename.endswith('.txt') :
            value_thefile = os.path.join(dirname,filename)
            key_size = os.path.getsize(value_thefile)
            d.update({key_size:value_thefile})
print d

字典
d
对于外部
for
循环的每次迭代,都将设置为一个新的空dict。即它不断被重新初始化为
{}

for (dirname, dirs, files) in os.walk('.'):
    d = dict()    # this makes d == {} for each iteration of os.walk('.')
    for filename in files:
        ...
相反,在循环外部初始化它,如下所示:

d = dict()    # this makes d == {} only at the start
for (dirname, dirs, files) in os.walk('.'):
    for filename in files:
        ...  # rest of your code

因为你在外循环的每次迭代中都给它分配了一个空字典。。。?这就是
d=dict()
所做的。如@jpmc26所示,尝试将
d=dict()
指令放在第一个循环之前。