加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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'}}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读