python - 在具有不同文件名的目录中查找并分隔最大元素
问题描述
我正在尝试查找目录中的最大元素,但该目录上有不同的文件名,如果我制作一个列表并使用max()
函数,我只会得到一个结果(显然是最大的一个),但是我怎样才能分开使用 max 之前的文件,以便我可以单独获取最大元素,或者有一种方法或函数可以做到这一点?谢谢。
example_directory_list = ['CM_30_00.v01', 'CM_30_00.v02', 'CM_30_00.v03', 'CM_30_00_house.v01','CM_30_00_house.v02', 'CM_30_00_house.v03', 'CM_30_01.v01', 'CM_30_00', 'CM_30_01']
print max (example_directory_list )
result ['CM_30_00.v03','CM_30_00_house.v03', 'CM_30_01.v01']
解决方案
你的问题有点不清楚。似乎文件扩展名是一个版本号,您想为每个不同的文件获取最高版本的文件名。
在下面的代码中,我忽略了没有扩展名的文件。
它绝不是健壮的。我什至不费心将版本号提取为int
. 它将文件扩展名比较为str
.
它的工作原理是遍历所有文件名,分离文件名和扩展名,将扩展名与迄今为止看到的最高版本(或“v00”,如果它还没有遇到相同的文件名)进行比较,并在dict
必要时更新。最后,它重构最高的文件名并将它们存储在results
list
.
example_directory_list = ['CM_30_00.v01',
'CM_30_00.v02',
'CM_30_00.v03',
'CM_30_00_house.v01',
'CM_30_00_house.v02',
'CM_30_00_house.v03',
'CM_30_01.v01',
'CM_30_00',
'CM_30_01', ]
files = {}
for filename in example_directory_list:
dot_index = filename.rfind(".")
if dot_index == -1:
continue
name_without_extension = filename[:dot_index]
extension = filename[dot_index+1:]
highest_version = files.get(name_without_extension, "v00")
if extension > highest_version:
files[name_without_extension] = extension
results = [f"{filename}.{extension}" for filename, extension in files.items()]
print(results)
输出:
['CM_30_00.v03', 'CM_30_00_house.v03', 'CM_30_01.v01']
推荐阅读
- python - 在 Python 中扩展列表时的一些奇怪行为
- python - 将自己的数据集应用到 Keras
- excel - Excel for Mac 中是否有通用路径查找器代码之类的东西
- python - 从另一个命令调用带有自定义类的 python click 命令
- node.js - TypeError:token.split 不是函数
- python - 无法从传入的请求中获得授权,即使我们通过 Postman 发送它
- docker - 如何将 azure 容器实例 docker 提交到 azure 容器注册表
- php - 如何将数组值动态添加到字符串中?
- excel - 使用单一公式计算收盘价
- android - 如何使用 Get 方法使用 JsonArrayRequest 修复空响应?