|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一个列表,我要查找他某个字符串重复出现过几次,把这个字符串找出来,并把他的位置都列出来,有多个重复的分别用字典列出来
我的这个就发现了一个问题,这个
def qc(lis):
new_lst = []
a=0#第一次写入new列表用
for i in range(len(lst)):
flag = True#退出用的标记
for j in range(len(lst)-i-1):#拿剩下的数据来比对
if lst[i] == lst[j + i + 1]:#有重复的数据的时候
fin = {"len": [i+1, i + j + 1+1],
"count": 2,
"value": lst[i]
}
if a == 1:#不是第一次的就下来
for k in range(len(new_lst)):
if new_lst[k]['value'] == lst[i]:
for m in range(len(new_lst[k]['len'])):
if new_lst[k]['len'][m]==i + j + 1:
flag = False
break
else:
fin = {"len": new_lst[k]['len']+[i + j + 1],
"count": new_lst[k]['count'] + 1,
"value": new_lst[k]['value']
}
if not flag:
break
del new_lst[k]
if not flag:
break
new_lst.append(fin)
a = 1
return (new_lst)
if __name__ == "__main__":
lst = ['1111', '2', '1111', '2', '1111', '1111', '1111', '2', '2', '1111', '999', '999', '999', '1111', '2', '1111', '2', '999']
print(qc(lst))
这个的结果居然是[{'len': [1, 3, 4, 5, 6, 9, 13, 15], 'count': 8, 'value': '1111'}, {'len': [2, 4, 7, 8, 14, 16], 'count': 6, 'value': '2'}, {'len': [11, 12, 17], 'count': 3, 'value': '999'}]
1111出现的应该么有4这个位置,但他居然列出来了,我就想问问到底是哪里出了问题? |
|