Python- list里面根据相同的元素数量排序

c649651 2010-09-18 01:06:51
一个大list里面,有很多相同的元素,元素的类型是tuple(x,y,z) xyz均为int值

现在要根据完全相同的元素数量排序

比如说(1,1,1)出现了100次,(1,2,1)出现了20次

需要的结果是排序完成了的不重复的队列

上面这个例子的结果应该是[(1,1,1), (1,2,1)]

谢谢大家的支持!
...全文
623 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_su 2010-09-18
  • 打赏
  • 举报
回复
a = [
(1,1,1), (1,1,1), (1,1,1), (1,1,1), (1,1,1),
(2,2,2), (2,2,2), (2,2,2), (2,2,2),
(3,3,3),
(4,4,4), (4,4,4), (4,4,4),
(5,5,5), (5,5,5)]

d = {}
for k in a:
d[k] = d.setdefault(k, 0) + 1
print d
b = d.keys()
b.sort(key=lambda k: d[k], reverse=True)
print b


{(3, 3, 3): 1, (2, 2, 2): 4, (1, 1, 1): 5, (5, 5, 5): 2, (4, 4, 4): 3}
[(1, 1, 1), (2, 2, 2), (4, 4, 4), (5, 5, 5), (3, 3, 3)]
c649651 2010-09-18
  • 打赏
  • 举报
回复
Do u have code for me? hehe~ This is the second day since I started learning Python, it challenges me very much.
angel_su 2010-09-18
  • 打赏
  • 举报
回复
哦是错了,那么建字典,元素tuple可以做key, 次数为value,建好后取出keys为列表,排序时比较它的值...
c649651 2010-09-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 angel_su 的回复:]

新列表=list(set(原列表))除掉重复, 然后新列表.sort()
[/Quote]

2楼,误解题意了。
题目的意思是说要根据重复元素的数量多少排序,如果第一步就除掉重复的了,那怎么知道哪个元素重复的次数更多呢?
angel_su 2010-09-18
  • 打赏
  • 举报
回复
新列表=list(set(原列表))除掉重复, 然后新列表.sort()

37,738

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧