Python中如何通过索引获取存储目录与文件数的字典对应行数据
实现方法
方法1:转换为行式存储列表(最简单,无需修改原有逻辑)
通过zip函数将原有的按字段分组的结构,转换为按行存储的列表,直接支持索引访问:
# 假设你的原始字典名为dir_dict dir_dict = { 'path': [ 'folder0', 'folder1', 'folder2', 'folder3'], 'count': [ '7', '21', '34', '56'] } # 转换为元组列表,每个元素对应一行(路径, 文件数) row_list = list(zip(dir_dict['path'], dir_dict['count'])) # 访问第0行 print(row_list[0]) # 输出: ('folder0', '7') # 单独取路径或计数 print(row_list[0][0]) # 输出: folder0 print(row_list[0][1]) # 输出: 7
如果需要更清晰的键值访问,可以转换为字典列表:
row_dict_list = [{'path': p, 'count': c} for p, c in zip(dir_dict['path'], dir_dict['count'])] print(row_dict_list[0]) # 输出: {'path': 'folder0', 'count': '7'} print(row_dict_list[0]['path']) # 输出: folder0
方法2:自定义可索引字典类(保留原有字典用法,同时支持索引访问)
如果你不想修改原有字典的结构,还需要保留原有的dict['path']这类按键访问的能力,可以重写字典的索引方法:
class IndexableDirDict(dict): def __getitem__(self, key): # 如果传入的是整数,按行索引返回对应数据 if isinstance(key, int): return { 'path': self['path'][key], 'count': self['count'][key] } # 非整数参数保留原字典的按键访问逻辑 return super().__getitem__(key) # 初始化自定义字典 my_dir_dict = IndexableDirDict(dir_dict) # 支持索引访问 print(my_dir_dict[0]) # 输出: {'path': 'folder0', 'count': '7'} # 原有按键访问不受影响 print(my_dir_dict['path']) # 输出: ['folder0', 'folder1', 'folder2', 'folder3']
内容的提问来源于stack exchange,提问作者Milad Sikaroudi
相关产品推荐
相关产品推荐

