如何根据前缀将文件名添加到字典中



我有以下问题。我有一个包含文件名的列表:

list_files = ["12_abc.txt", "12_ddd_xxx.pdf", "23_sss.xml", "23_adc.txt", "23_axx_yyy.pdf"]

我需要根据它们的前缀编号,即12和23,将它们添加到字典中。字典的每个值都应该是一个列表,其中包含具有相同前缀的所有文件。所需输出为:

dictionary = {"12": ["12_abc.txt", "12_ddd_xxx.pdf"], "23": ["23_sss.xml", "23_adc.txt", "23_axx_yyy.pdf"]}

到目前为止我尝试了什么:

dictionary = {}
for elem in list_files:
prefix = elem.split("_")[0]
dictionary[prefix] = elem

然而,这给了我结果{'12': '12_ddd_xxx.pdf', '23': '23_axx_yyy.pdf'}。请告诉我如何将我的elem添加到循环中的列表中?

尝试:

list_files = ["12_abc.txt", "12_ddd_xxx.pdf", "23_sss.xml", "23_adc.txt", "23_axx_yyy.pdf"]
dictionary = {}
for f in list_files:
prefix = f.split('_')[0]  # or prefix, _ = f.split('_', maxsplit=1)
dictionary.setdefault(prefix, []).append(f)
print(dictionary)

打印:

{'12': ['12_abc.txt', '12_ddd_xxx.pdf'], '23': ['23_sss.xml', '23_adc.txt', '23_axx_yyy.pdf']}

编辑:添加了maxsplit=1变体,感谢@Ma0

这是从collections使用defaultdict的好地方。

from collections import defaultdict
d = defaultdict(list)
list_files = ["12_abc.txt", "12_ddd_xxx.pdf", "23_sss.xml", "23_adc.txt", "23_axx_yyy.pdf"]
for elem in list_files:
prefix =  elem.split("_")[0]
d[prefix].append(elem)

收益率:

{'12': ['12_abc.txt', '12_ddd_xxx.pdf'],
'23': ['23_sss.xml', '23_adc.txt', '23_axx_yyy.pdf']}

相关内容

  • 没有找到相关文章

最新更新