如何解决如何按每个子列表中非零元素的数量对列表列表进行排序?
我有一个列表列表(8个列表,每个列表15个元素),如下所示:
mylist = [
['Adam','0','1','0'],['Bobby',['Felicia',['Jake',['MikeP',['MikeF',['Shannon',['Tom','0']
]
使用Python 3,我试图将mylist
从子列表中的最高零开始到子列表中的最低零进行排序。我不想在每个列表中进行排序-0和1必须保持在最终位置。
我尝试使用len()
和lambda函数以及其他我在这里找到的想法,例如使用以下内容将其分解:
for index1,value1 in enumerate(mylist):
mylistsorted.append([value2 for index2,value2 in enumerate(mylist[index1]) if value2 != '0'])
mylistsorted.sort(key = len)
但是我当然失去了新排序列表中的所有“ 0”。也许应该用numpy或矩阵之类的东西或其他副列表之类的东西来做到这一点?谢谢您的帮助...
解决方法
使用list.count
作为密钥,以对每个列表中的全0进行计数:
sorted(mylist,key=lambda x: -x[1:].count('0'))
,
使用key
来计数0的数量:
mylist.sort( key = lambda l : -l.count('0') )
,
进行不太疯狂的猜测,然后对它们进行计数:
mylist.sort(key=lambda l: l.count('1'))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。