关于一个列表查找重复数据的问题
一个列表,我要查找他某个字符串重复出现过几次,把这个字符串找出来,并把他的位置都列出来,有多个重复的分别用字典列出来我的这个就发现了一个问题,这个
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 == lst:#有重复的数据的时候
fin = {"len": ,
"count": 2,
"value": lst
}
if a == 1:#不是第一次的就下来
for k in range(len(new_lst)):
if new_lst['value'] == lst:
for m in range(len(new_lst['len'])):
if new_lst['len']==i + j + 1:
flag = False
break
else:
fin = {"len": new_lst['len']+,
"count": new_lst['count'] + 1,
"value": new_lst['value']
}
if not flag:
break
del new_lst
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': , 'count': 8, 'value': '1111'}, {'len': , 'count': 6, 'value': '2'}, {'len': , 'count': 3, 'value': '999'}]
1111出现的应该么有4这个位置,但他居然列出来了,我就想问问到底是哪里出了问题? def qc(lst):
new_lst = []
for i in range(len(lst)):
value = lst
positions = == value]
if len(positions) > 1:
entry = {'len': len(positions), 'count': len(positions), 'value': value, 'positions': positions}
# 检查字典中是否已经有这个值存在,以避免重复记录
if value not in for d in new_lst]:
new_lst.append(entry)
return new_lst
if __name__ == "__main__":
lst = ['1111', '2', '999', '1111', '2', '1111', '999', '2', '999']
print(qc(lst))
在这个代码中,我使用了列表推导式来找到每个字符串的所有位置,并额外添加一个'dpositions'键来列出它们的所有位置。此代码应正确输出各字符串及其所有出现的位置。请注意代码中`if value not in for d in new_lst]:`这一行,它确保每个重复项只被记录一次。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 jackz007 于 2024-11-23 17:32 编辑
def qc(lis):
d = []
for x in sorted(set(lis)):
d . append({'len' : == x] , 'count' : lis . count(x) , 'value' : x})
return d
lst = ['1111', '2', '1111', '2', '1111', '1111', '1111', '2', '2', '1111', '999', '999', '999', '1111', '2', '1111', '2', '999']
print(qc(lst))
页:
[1]