我正在尝试使用以下格式创建嵌套字典:
d3 = {'343564': {'32.cnt':['eeo', 'eec', 'vp3'],
'avg.ps': ['cpt', 'vp3', 'ern']}}
这是我到目前为止所做的:
d2 = {}
for r,d,f in os.walk(path):
for n in f:
if n.endswith(('txt', 'sub','avg', 'dat')):
pass
if n.endswith('32.cnt'):
split=n.split("_")
d2.setdefault(split[3], []).append({split[-1]:split[0]})
但它会返回:
{'343564': [{'32.cnt': 'eeo'},
{'32.cnt': 'eec'},
{'32.cnt': 'vp3'},
{'avg.ps': 'cpt'},
{'avg.ps': 'vp3'}
{'avg.ps': 'ern}
如何将内键“折叠”为1键并根据内部值创建列表?
答案 0 :(得分:1)
我猜到了一个文件名格式,它与你正在尝试的东西一起工作:
from collections import defaultdict
from pprint import pprint
d2 = defaultdict(lambda:defaultdict(list))
for n in ['eeo_xxx_xxx_343564_32.cnt','eec_xxx_xxx_343564_32.cnt','vp3_xxx_xxx_343564_32.cnt',
'cpt_xxx_xxx_343564_avg.ps','vp3_xxx_xxx_343564_avg.ps','ern_xxx_xxx_343564_avg.ps']:
split=n.split("_")
d2[split[3]][split[-1]].append(split[0])
pprint(d2)
<强>输出:强>
{'343564': {'32.cnt': ['eeo', 'eec', 'vp3'], 'avg.ps': ['cpt', 'vp3', 'ern']}}