我有一个看起来像这样的字符串:

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或根据需要即可。

10-01 12:00