有没有更好的方法可以在巨大的查找表的指导下进行替换?

2024-05-29 00:18:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将旧文件名(已在一台主机上的图形库中上载并识别)替换为其他文件名(已存在于另一台主机上的媒体库中)

我的Python脚本是这样写的:

def imageFilesSub(oldFileName):
    imageDict = {
        'Switzer_Falls_16_140L.jpg': 'Switzer_Falls_140_04232016.jpg', 
        ...
        'Switzer_Falls_16_049L.jpg': 'Switzer_Falls_049_04232016.jpg',
        'Switzer_Falls_09_048L.jpg': 'Switzer_Falls_048_03072009.jpg',
        ...
        'Switzer_Falls_09_013L.jpg': 'Switzer_Falls_013_03072009.jpg',
        'Pasadena_001L.jpg': 'Pasadena_001_04232016.jpg',
        'Switzer_Falls_03_015L.jpg': 'Switzer_Falls_015_02022003.jpg',
        'Tunnel_View_03_010L.jpg': 'Tunnel_View_010_05102003.jpg',
        ...
        }
    newFileName = imageDict[oldFileName]
    return newFileName

blah = imageFilesSub('Switzer_Falls_16_049L.jpg')
print(blah)

打印的内容是:

'Switzer_Falls_049_04232016.jpg'

这是所需的文件名

所以问题是:

是否可以执行此替换,而不必基于旧文件名使此imageDict包含42000个唯一键(因为我有42000个文件名需要进行此文件名转换)

总的来说,有没有更好的方法来完成这项任务?我处理这个问题的方式是错误的还是低效的

谢谢


Tags: 脚本view文件名jpg图形库tunnelblah媒体库
1条回答
网友
1楼 · 发布于 2024-05-29 00:18:10

构建映射后,请将其保留在一个不会为每次查找重建映射的范围内

另外,您的方法只进行字典查找,因此我将简化如下:

filename_mapping = {
    'Switzer_Falls_16_140L.jpg': 'Switzer_Falls_140_04232016.jpg', 
    ...
}

for filename in filenames:
    try:
        do_something(filename_mapping[filename])
    except KeyError:
        # handle scenario where there is no mapping
        pass

相关问题 更多 >

    热门问题