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:{'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', 'doc0012', 'doc0055'},
             '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', 'doc0012', 'doc0055'},
 '2': {'doc0066', 'doc0095'},
 '3': {'doc0045'}}
点赞