在python中从列表生成字典
我有一个路径列表,比如在python中从列表生成字典,python,list,dictionary,Python,List,Dictionary,我有一个路径列表,比如['aaa/aaa.csv','aaa/bbb.csv','aaa/ccc.csv']。 当路径中的第一个文件夹与其他文件夹相同时,如何将其转换为字典,如{'aaa':['aaa.csv','bbb.csv','ccc.csv']等 我尝试了这段代码,但不知道下一步该怎么做 list_split = [i.split('/') for i in list] dic = {} list_temp = [] for item in list_split: list_t
['aaa/aaa.csv','aaa/bbb.csv','aaa/ccc.csv']
。
当路径中的第一个文件夹与其他文件夹相同时,如何将其转换为字典,如{'aaa':['aaa.csv','bbb.csv','ccc.csv']
等
我尝试了这段代码,但不知道下一步该怎么做
list_split = [i.split('/') for i in list]
dic = {}
list_temp = []
for item in list_split:
list_temp.append(item)
if len(list_temp) < 2:
pass
else:
for itemm in list_temp:
pass
list_split=[i.split('/')表示列表中的i]
dic={}
列表_temp=[]
对于列表中的项目\u拆分:
列表临时附加(项目)
如果len(列表温度)<2:
通过
其他:
对于列表中的项目M\u temp:
通过
您可以尝试以下方法:
>>> L = ['aaa/aaa.csv', 'aaa/bbb.csv', 'aaa/ccc.csv']
>>> list_split = [tuple(i.split('/')) for i in L]
>>> newdict = {}
>>> for (key,item) in list_split:
if key not in newdict:
newdict[key]=[]
newdict[key].append(item)
输出:
{'aaa': ['aaa.csv', 'bbb.csv', 'ccc.csv']}
您还可以为此使用
defaultdict
:
from collections import defaultdict
paths = ['aaa/aaa.csv', 'aaa/bbb.csv', 'aaa/ccc.csv', 'bbb/ccc.csv', 'aaa/bbb/ccc.csv']
dict = defaultdict(list)
for *key, value in [x.split('/') for x in paths]:
dict['/'.join(key)].append(value)
print(dict.items())
print(dict['aaa'])
通过将完整路径作为键,这也适用于嵌套目录。只是一个警告:按照您当前使用的
split
,如果遇到多个嵌套目录,您可能会遇到麻烦,例如/aaa/bbb/ccc.csv
可以使用作为键,val在[x.split(“/”)中为lst中的x清除一点:
当您有两个路径相同的文件时会发生什么?
>>> L = ['aaa/aaa.csv', 'aaa/bbb.csv', 'aaa/ccc.csv']
>>> list_split = [tuple(i.split('/')) for i in L]
>>> newdict = {}
>>> for (key,item) in list_split:
if key not in newdict:
newdict[key]=[]
newdict[key].append(item)
{'aaa': ['aaa.csv', 'bbb.csv', 'ccc.csv']}
from collections import defaultdict
paths = ['aaa/aaa.csv', 'aaa/bbb.csv', 'aaa/ccc.csv', 'bbb/ccc.csv', 'aaa/bbb/ccc.csv']
dict = defaultdict(list)
for *key, value in [x.split('/') for x in paths]:
dict['/'.join(key)].append(value)
print(dict.items())
print(dict['aaa'])