如何将我的文件大小和名称放入字典
How to put my size and name of a file into dictionary
我有 3 个文件 size_1.py
size_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
字典的值中。您应该放置字符串列表。为此,我建议您使用 defaultdict
class 直接定义一个以列表为值的字典,这样更舒服。
我可能还会建议您对代码进行一些小的改进以提高可读性,如下所示:
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)
我有 3 个文件 size_1.py
size_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
字典的值中。您应该放置字符串列表。为此,我建议您使用 defaultdict
class 直接定义一个以列表为值的字典,这样更舒服。
我可能还会建议您对代码进行一些小的改进以提高可读性,如下所示:
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)