免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 20281 | 回复: 8

如何找出 python list 中有重复的项 [复制链接]

论坛徽章:
0
发表于 2010-03-22 14:36 |显示全部楼层
本帖最后由 iamkey9 于 2010-03-22 14:47 编辑

如题,
我找到了去除的方法,但是没找到列出的方法
list(set(LIST))

我想知道 (多个)重复项 在某个位置, 一共出现了多少次

有没有知道的朋友,给点提示,谢谢

论坛徽章:
0
发表于 2010-03-22 14:53 |显示全部楼层
遍历一次吧

论坛徽章:
0
发表于 2010-03-22 15:00 |显示全部楼层
遍历一次吧
luffy.deng 发表于 2010-03-22 14:53


我就是不想用遍历呢,我一直在想用set 和 list 能不能做减法,求得差,应该就是有重复的项了......

论坛徽章:
0
发表于 2010-03-22 15:48 |显示全部楼层
>>> s=[11,22,11,44,22]
>>> [(s[i],i) for i in range(len(s)) if s.count(s[i])>1]
[(11, 0), (22, 1), (11, 2), (22, 4)]

是否想这个样子的。。。

论坛徽章:
0
发表于 2010-03-22 17:17 |显示全部楼层
>>> s=[11,22,11,44,22]
>>> [(s,i) for i in range(len(s)) if s.count(s)>1]
[(11, 0), (22, 1), (11,  ...
smallfish_xy 发表于 2010-03-22 15:48



谢谢,这个很有用:-)

我更想要的是类似这样的结果

如果list有一个,
s=[11,22,11,44,22,33]
输出
[
[11,(0,3)]
[22,(1,5)]
]
代表了11有重复,重复位置是(0,3)

如果是两个,就
s1=[11,22,11,44,22,33]
s2=[11,44]
输出
[
[11,(1.0,1.3,2.1)]
[22,(1.1,1.5)]
[44,(1.3,2.1)]
]

论坛徽章:
0
发表于 2010-03-24 10:22 |显示全部楼层
(多个)重复项 在某个位置, 一共出现了多少次
s=[11,22,11,44,22]
s.count(22)
结果:2

论坛徽章:
0
发表于 2010-03-26 15:24 |显示全部楼层
本帖最后由 luffy.deng 于 2010-03-26 15:34 编辑

回复 5# iamkey9

这个可以用defaultdict解决,而且很有趣。
  1. from collections import defaultdict
  2. s=[11,22,11,44,22,33]
  3. d = defaultdict(list)
  4. for k,va in [(v,i) for i,v in enumerate(s)]:
  5.     d[k].append(va)
  6. print  d.items()
复制代码
输出: [(33, [5]), (11, [0, 2]), (44, [3]), (22, [1, 4])]

论坛徽章:
0
发表于 2010-11-12 13:34 |显示全部楼层
回复  iamkey9

这个可以用defaultdict解决,而且很有趣。输出: [(33, [5]), (11, [0, 2]), (44, [3]), ...
luffy.deng 发表于 2010-03-26 15:24



    d = defaultdict(list) ,这句话,好有趣哦,交互式再给点简单的例子,这个例子有点看不懂,学习学习

论坛徽章:
0
发表于 2010-11-18 00:08 |显示全部楼层
  1. >>> from collections import Counter
  2. >>> Counter([11,22,11,44,22,33])
  3. Counter({11: 2, 22: 2, 33: 1, 44: 1})
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP