构建Python Dict

构建Python Dict,python,list,dictionary,Python,List,Dictionary,我正在写一个函数来读取一个确定的文件,在这种情况下,用户可以选择他想要读取的文件 import os import pprint as p path = "C:\Users\cgr02\Documents\Py" listname = {} for root, dirs, files in os.walk(path): for filename in files: if filename.endswith(".xlsx"): ob = listanome.setdefault(f

我正在写一个函数来读取一个确定的文件,在这种情况下,用户可以选择他想要读取的文件

import os
import pprint as p

path = "C:\Users\cgr02\Documents\Py"
listname = {}

for root, dirs, files in os.walk(path):
 for filename in files:
  if filename.endswith(".xlsx"):
   ob = listanome.setdefault(filename, dict({'FILE': filename}))

p.pprint (listname)
输出:

 '19-10-2017.xlsx': {'FILE': '19-10-2017.xlsx'},
 '19-11-2017.xlsx': {'FILE': '19-11-2017.xlsx'},
 '20-06-2017.xlsx': {'FILE': '20-06-2017.xlsx'},
 '20-07-2017.xlsx': {'FILE': '20-07-2017.xlsx'},
 '20-08-2017.xlsx': {'FILE': '20-08-2017.xlsx'},
 '20-09-2017.xlsx': {'FILE': '20-09-2017.xlsx'},
 '20-10-2017.xlsx': {'FILE': '20-10-2017.xlsx'},
用户期望看到的内容:

'1': {'File': '20-10-2017.xlsx'},
'2': {'File': '20-09-2017.xlsx'},
'3': {'File': '20-08-2017.xlsx'},
'4': {'File': '20-12-2017.xlsx'},
'5': {'File': '20-11-2017.xlsx'},

我不知道这是否是在屏幕上显示和操纵用户选择的更好方式。使用列表会更好吗?

是的,您可以简单地使用列表。与使用dict.setdefault相比,使用列表理解也可以使这一点更加简单

例如:

import os
path = ...
files = [filename for root, dirs, files in os.walk(path) 
         for filename in files 
         if filename.endswith(".xlsx")]
然后使用枚举和打印而不是pprint:


请注意,您可能应该存储根目录和目录,以防实际需要再次查找选定的文件。

这很好,我不知道,但我如何将其添加到dict?附加?解决方案不使用任何dict,您希望保留哪个dict?例如,如何恢复用户选择的文件名?在我看来,通过idx我可以得到文件名+路径。。你觉得呢?我还是不知道你想要什么。用户是否输入文件名或数字?如果是一个数字,只需将该数字转换为整数,减去1,然后用该数字为列表编制索引。它应该返回没有路径的相应文件名,除非您将文件名+路径存储在列表中,而不仅仅是文件名。是的,就是这样!谢谢
for idx, file in enumerate(files, 1):  # enumeration, starting with 1 instead of 0
    print(idx, file)