如何用Python循环将字典的长文件路径键改为字符串整数
批量替换字典键:将CSV文件路径键改为字符串整数
问题背景
读取文件夹中多个CSV文件到字典时,默认用文件完整路径作为键(例如dfs['/content/drive/My Drive/LAICPMS 72123/ANP/ANP 072123_7.csv']),操作时需输入完整路径十分不便。手动通过pop替换键可行,但需要批量自动化处理,已生成对应数量的字符串整数列表,却不清楚如何关联替换。
解决方案
方案1:读取文件时直接设置新键(推荐)
无需先以路径为键存储再替换,读取时直接用顺序索引转字符串作为键,一步到位:
import pandas as pd from os import listdir, path # 目标文件夹路径 folder_path = "/content/drive/My Drive/LAICPMS 72123/ANP" # 筛选文件夹内所有CSV文件(避免非CSV文件干扰) csv_files = [ path.join(folder_path, file_name) for file_name in listdir(folder_path) if path.isfile(path.join(folder_path, file_name)) and file_name.endswith(".csv") ] dfs = {} # 遍历文件,用索引转字符串作为新键(从1开始计数,若要从0开始则改为str(idx)) for idx, file_path in enumerate(csv_files): new_key = str(idx + 1) dfs[new_key] = pd.read_csv(file_path, sep=",", skiprows=13) dfs[new_key].loc[0] = 0 # 将第一行设为0
方案2:对已存在的字典批量替换键
如果已经生成了以路径为键的字典dfs,可通过以下代码批量替换:
# 生成与字典长度匹配的字符串整数列表(从1开始计数) new_keys = [str(i + 1) for i in range(len(dfs))] # 配对原路径键与新键,批量替换 for old_key, new_key in zip(list(dfs.keys()), new_keys): dfs[new_key] = dfs.pop(old_key)
注意事项
- 确保新键列表的长度与原字典的键数量完全一致,避免出现遗漏或键不匹配的问题
- 若需要从0开始编号,将代码中的
idx + 1和i + 1改为idx和i即可 - 原统计文件数量的代码存在语法错误:
"/content/drive/My Drive/LAICPMS 72123/"ANP应改为"/content/drive/My Drive/LAICPMS 72123/ANP",或使用path.join拼接路径更安全
内容的提问来源于stack exchange,提问作者sekushi0range
相关产品推荐
相关产品推荐

