我有一个看起来像这样的字符串:
estr = '01010101010101010101000000000039021111083902111108'
然后,我将字符串切成列表以给出以下输出:
['0101010101', '0000000000', '3902111108', '3902111108', '0000000000', '0101010101']
我试图做到这一点,以便每当我的代码在任何子字符串中找到匹配的数字时,它将用新值替换列表中的输出,并同时创建一个字典来存储该值。
一个例子是:
输出:
['0101010101', '0000000000', '3902111108', '3902111108', '0000000000', '0101010101']
运行我的代码,新的输出如下所示:
['H001', 'H002', 'H003', 'H003', 'H002', 'H001']
然后从该输出创建一个字典,其中每个子字符串是键,而H001,H002,H003等是值。
dict = {'0101010101':'H001', '0000000000':'H002', '3902111108':'H003'}
这是我正在尝试的代码,我只是无法弄清楚如何编写它来给我想要的输出:
from collections import Counter as ct
estr = '01010101010101010101000000000039021111083902111108'
estr = str(int(estr)
estr = estr[1:]
estr = [estr[i:i+10] for i in range(0, len(estr), 10)]
print(estr)
ct = ct()
while estr == range(0, len(estr), 10):
if i in estr == estr:
ct.update()
print('Sequence:', ct)
ct.update({})
print('Dict:', ct)
这是我迷路的地方。我不知道如何写这个给我想要的输出。
最佳答案
您可以构建字典并使用str.rjust
设置字符串值的格式:
l = ['0101010101', '0000000000', '3902111108', '3902111108',
'0000000000', '0101010101']
d = {}
c = 1
for s in l:
if s not in d:
d[s] = 'H' + '{}'.format(str(c).rjust(3, '0'))
c += 1
print(d)
# {'0101010101': 'H001', '0000000000': 'H002', '3902111108': 'H003'}
请注意,此处使用
rjust
的目的是为任意数量的唯一字符串使用3位数字。对于999个以上的字符串,只需将3更改为4或根据需要即可。