免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 20070 | 回复: 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})
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP