如何解决如何从带有条件的文件夹绝对名称中创建键值
我的输出低于
它是一个生成器输出(列表项)
for i in listoffiles:
print (files)
输出
test1/
test1/Code.csv
test2/
test2/anomaly.csv
test2/an.csv
test3
test4
当且仅当/之后的任何内容都需要生成字典时,您才能看到输出中没有键test3和test4
预期
{'test1' :'Code.csv','test2':['anomaly.csv','an.csv']}
解决方法
尝试一下
from collections import defaultdict
result = defaultdict(list)
for f in listoffiles:
if "/" in f:
split_ = f.split("/")
# skip if leaf is empty
if not split_[1]:
continue
result[split_[0]].append(split_[1])
在itertools.groupby
的帮助下的另一种解决方案,
from itertools import groupby
filter_ = filter(lambda x : "/" in x and x.split("/")[1],listoffiles)
print(
{k : [vv.split("/")[1] for vv in v]
for k,v in groupby(filter_,key=lambda x : x.split("/")[0])}
)
{'test1': ['Code.csv'],'test2': ['anomaly.csv','an.csv']}
,
以下为您工作吗?
import re
file_dict = {}
for file in listoffiles:
m = re.search(r"(\S*)\/(\S*)",file).groups()
if m is None:
continue
dir_name,file_name = m.groups()
if file_name == "":
continue
if not file_dict.get(dir_name):
file_dict[dir_name] = file_name
elif type(file_dict[dir_name]) == list:
file_dict[dir_name].appendUfile_name
else:
file_dict[dir_name] = [file_dict[dir_name],file_name]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。