gpt4 book ai didi

python - 拆分列表字符串并创建字典

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:37 25 4
gpt4 key购买 nike

我有这个列表:

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+'second number 来自列表项,其中 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验证上面的结果,或者使用稍微不同(效率较低的解决方案)使用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'}}

关于python - 拆分列表字符串并创建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52507983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com