cdzjf 发表于 2024-11-23 10:59:09

关于一个列表查找重复数据的问题

一个列表,我要查找他某个字符串重复出现过几次,把这个字符串找出来,并把他的位置都列出来,有多个重复的分别用字典列出来

我的这个就发现了一个问题,这个


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这个位置,但他居然列出来了,我就想问问到底是哪里出了问题?

FishC 发表于 2024-11-23 11:16:13

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 15:04:46

本帖最后由 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]
查看完整版本: 关于一个列表查找重复数据的问题