python – 拆分列表字符串并创建字典
发布时间:2020-12-20 11:07:29 所属栏目:Python 来源:网络整理
导读:我有这个清单: lst= ['1 5','1 12','1 55','2 95','2 66','3 45',...] 正如您所看到的,每个项目由2个数字组成,第二个数字最多为4个字符,并且它们以空格分隔. 我想把它转移到这样的字典中 dct={1:{'doc0005','doc0012','doc0055'},2:{'doc0095','doc0066'},3
我有这个清单:
lst= ['1 5','1 12','1 55','2 95','2 66','3 45',...] 正如您所看到的,每个项目由2个数字组成,第二个数字最多为4个字符,并且它们以空格分隔. 我想把它转移到这样的字典中 dct={1:{'doc0005','doc0012','doc0055'},2:{'doc0095','doc0066'},3:{'doc0045'},...} 每个值项应该是7个字符长:’doc’someZeros’列表项中的第二个数字,其中someZeros是额外的0个字符,使值7个字符长.第一个数字将是字典的关键 我试图拆分列表中的每个项目并通过循环将其添加到字典中,但我感到困惑 解决方法
使用(默认)集合字典很容易做到这一点.
from collections import defaultdict d = defaultdict(set) for l in lst: k,v = l.split() d[k].add(f'doc{int(v):04d}') # "doc{:04d}".format(int(v)) print(d) defaultdict(set,{'1': {'doc0005','2': {'doc0066','doc0095'},'3': {'doc0045'}}) 如果您更喜欢简单的字典,或者使用dict.setdefault来对上面的结果进行分类,或使用稍微不同(效率较低的解决方案): d = {} for l in lst: k,v = l.split() d.setdefault(k,set()).add(f'doc{int(v):04d}') # "doc{:04d}".format(int(v)) print(d) {'1': {'doc0005','3': {'doc0045'}} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |