Python 如何将我的文件大小和名称放入字典
我有3个文件Python 如何将我的文件大小和名称放入字典,python,list,file,dictionary,file-io,Python,List,File,Dictionary,File Io,我有3个文件size\u 1.pysize\u 2.pysize.py 我的代码在下面 import os result = {} for (dirname,dirs,files) in os.walk('.'): for filename in files: if filename.endswith('.py'): thefile = os.path.join(dirname,filename) size = (os.p
size\u 1.py
size\u 2.py
size.py
我的代码在下面
import os
result = {}
for (dirname,dirs,files) in os.walk('.'):
for filename in files:
if filename.endswith('.py'):
thefile = os.path.join(dirname,filename)
size = (os.path.getsize(thefile),thefile)
# print (size)
result[size[0]] = size[1]
print (result)
我的输出
{315: './size.py', 249: './size_1.py'}
我的期望输出
{315:['./size.py']
249 : ['size_1.py', './size_2.py']
}
您只需添加一个if检查,查看字典中是否已经存在键(大小):
import os
result = {}
for (dirname,dirs,files) in os.walk('.'):
for filename in files:
if filename.endswith('.py'):
thefile = os.path.join(dirname,filename)
size = (os.path.getsize(thefile),thefile)
# print (size)
if size[0] in result:
result[size[0]].append(size[1])
else:
result[size[0]] = [size[1]]
print (result)
您只在
result
dictionary的值中放入字符串。你应该把字符串列表。为此,我建议您使用defaultdict
类直接定义一个以列表作为值的字典,这样更方便。我还可以建议您对代码的可读性进行一些小的改进,如下所示:
import os
from collections import defaultdict
result = defaultdict(list)
for (dirname,dirs,files) in os.walk('.'):
for filename in files:
if filename.endswith('.py'):
thefile = os.path.join(dirname,filename)
size = os.path.getsize(thefile)
result[size].append(thefile)
print (result)
您可以使用列表的defaultdict轻松完成此操作,只需附加值而不是赋值
import os
from collections import defaultdict
result = defaultdict(list)
for (dirname,dirs,files) in os.walk('.'):
for filename in files:
if filename.endswith('.py'):
thefile = os.path.join(dirname,filename)
size = (os.path.getsize(thefile),thefile)
# print (size)
result[size[0]].append(size[1])
print (result)
或者,在不使用defaultdict的情况下:
import os
result = {}
for (dirname,dirs,files) in os.walk('.'):
for filename in files:
if filename.endswith('.py'):
thefile = os.path.join(dirname,filename)
size = (os.path.getsize(thefile),thefile)
# print (size)
result.setdefault(size[0], []).append(size[1])
print (result)
你能更好地解释你的输入和输出之间的关系吗?