找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4927|回复: 4

[求助] 嵌套列表的按自定义条件排序

6

主题

18

帖子

18

积分

贫民

积分
18
马克思和臭皮匠 发表于 2017-1-12 22:18:28 | 显示全部楼层 |阅读模式
小程序里想要实现的功能,对嵌套列表里面的小列表们按照自定义的条件进行排序,

    list = [[1], [1,2,3,4,5,6,7], [1,2,3], [1,2], [1,2,3,4], [1,2,3,4,5,6,7,8]]
方程1: (列表长度) / 10方程2: (列表长度) / 12list里的前三个小列表通过方程1, 后三个小列表通过方程2来加以限制,再一起来排序想得到排序的结果:
    list = [[1],[1,2],[1,2,3],[1,2,3,4],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7]]

([1,2,3,4,5,6,7,8]除以了12,所以比[1,2,3,4,5,6,7]除以10要小)

查了很多资料,都只查到比如根据小列表的第几位数字的大小对所有小列表进行排序,或者根据小列表里元素数量对所有的小列表进行排序。
求问这种自定义公式来对嵌套列表排序该如何实现呢? 十分感谢!



回复

使用道具 举报

0

主题

20

帖子

20

积分

贫民

积分
20
zxy 发表于 2017-1-13 14:28:42 | 显示全部楼层
list = [[1], [1,2,3,4,5,6,7], [1,2,3], [1,2], [1,2,3,4], [1,2,3,4,5,6,7,8]]

l=map(lambda x:{list.index(x):float(len(x))/10} if list.index(x)<3 else {list.index(x):float(len(x))/12},list)

a = []
for i in sorted(l,key=lambda x:x.values()):
        a.append(list[sum(i.keys(),0)])

print a
回复 支持 1 反对 0

使用道具 举报

6

主题

18

帖子

18

积分

贫民

积分
18
马克思和臭皮匠  楼主| 发表于 2017-1-16 21:10:41 | 显示全部楼层
zxy 发表于 2017-1-13 14:28
list = [[1], [1,2,3,4,5,6,7], [1,2,3], [1,2], [1,2,3,4], [1,2,3,4,5,6,7,8]]

l=map(lambda x:{list.in ...

额,谢谢回复!不过确实没怎么看懂。。。请问能稍微解释一下吗。。。
回复 支持 反对

使用道具 举报

0

主题

20

帖子

20

积分

贫民

积分
20
zxy 发表于 2017-1-18 09:55:27 | 显示全部楼层
马克思和臭皮匠 发表于 2017-1-16 21:10
额,谢谢回复!不过确实没怎么看懂。。。请问能稍微解释一下吗。。。

思路就是 先把你的list按照你的条件弄成一个字典key为list的元素value为这个list的len,然后按照字典的值排序,然后在遍历这个排序后的字典输出key,添加到一个新的列表中。
回复 支持 反对

使用道具 举报

6

主题

18

帖子

18

积分

贫民

积分
18
马克思和臭皮匠  楼主| 发表于 2017-1-18 19:59:30 | 显示全部楼层
zxy 发表于 2017-1-18 09:55
思路就是 先把你的list按照你的条件弄成一个字典key为list的元素value为这个list的len,然后按照字典的值 ...

了解!赞!谢了!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表