Python如何对列表空字符赋值,每个字符串都以上一个检索到存在的值作为基数自增

之前有一个文档,我对其中的数值要进行自动化添加,但是里面的数值是无序的,每当遇到一个值为空的元素都要向上找到最后一个数值进行自增,并且要算上中间有多少个空的值就循环几次

经过我处理了过后,文档已经能够自动判断添加过后的新dict.keys,但我始终无法完成自增这一块的逻辑和方法

相关代码

def do_str_2():
    dict1 = []
    dict2 = []
    count = 0
    with open(sys.path[0]+'/success.txt','r') as f:
        for f in f.readlines():
            if '=' in f:
                f = f.replace('\n','').replace(',','').split('=')
                f[0] = f[0].strip()
                f[1] = f[1].strip()
                # print(f)
                result_dict[f[0]] = f[1]
            else:
                f = f.replace('\n','').split(',')
                if len(f) > 1:
                    f[0] = f[0].strip()
                    f[1] = f[1].strip()
                    # print(f)
                    result_dict[f[0]] = f[1]

    for value in result_dict.values():
        dict1.append(value)
    print(dict1)
    
  

最终处理完成后得到的结果是这样一个列表,这个列表就是字典的值

['00', '01', '', '', '100000', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '10100', '10200', '200000', '', '', '', '', '', '20100', '20200', '1', '', '', '', '100', '101', '102', '103', '111', '112', '114', '115', '120', '121', '123', '124', '199', '10000', '10002', '10003', '10100', '10102']

我最终要得到的结果为下面的列表一样,但是里面的值是根据上一个最后不为空的值进行添加的,
比如说 ['00', '01', '', '']那么现在里面有两个空元素就应该找到01这个值作为基数来
循环两次,结果就为['00', '01', '02', '03'],求大神解答

['00', '01', '02', '03', '100000', '100001', '100002', '100003', '100004', '100005', '100006', '100007', '100008', '100009', '100010', '100011', '100012', '100013', '100014', '100015', '100016', '100017', '10100', '10200', '200000', '200001', '200002', '200003', '200004', '200005', '20100', '20200', '1', '2', '3', '4', '100', '101', '102', '103', '111', '112', '114', '115', '120', '121', '123', '124', '199', '10000', '10002', '10003', '10100', '10102']

犯罪嫌疑人X
浏览 1101回答 3
3回答

慕尼黑的夜晚无繁华

参考 def foo(ls): assert ls and ls[0] != '' ls2 = list(ls) for i in range(len(ls2)): if ls2[i] == '': ls2[i] = str(int(ls2[i-1]) + 1) return ls2

30秒到达战场

楼上的少了一个补零的操作,在这里补上 def foo(lst): for i, _ in enumerate(lst): if not _: lst[i] = str(int(lst[i - 1]) + 1).zfill(len(lst[i - 1])) return lst lst = ['00', '01', '', '', '100000', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '10100', '10200', '200000', '', '', '', '', '', '20100', '20200', '1', '', '', '', '100', '101', '102', '103', '111', '112', '114', '115', '120', '121', '123', '124', '199', '10000', '10002', '10003', '10100', '10102'] print foo(lst)

翻阅古今

list(reduce(lambda a,b: a+[b] if b else a+[str(int(a[-1])+1).zfill(len(a[-1]))], [s[:1]]+s[1:])) 缺点就是不够直观, 2333
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python