Python 对包含真/假的二维列表进行排序
我有一个数组,其中包含Python 对包含真/假的二维列表进行排序,python,arrays,sorting,Python,Arrays,Sorting,我有一个数组,其中包含True/False。我想按哪个最小的False排序。我应该如何尝试对它们进行排序 我的第一个想法是将第二维度数组中的每个元素放入一个dict中,并在数组中添加一个包含False数量的键。并以此为基础对它们进行排序。大概是这样的: {"value": 1, "array": [true, true, false]} 但这对我来说似乎有点麻烦。那么有没有一种优化的方法呢?您可以使用排序和键参数来表示每个列表中的假数 >>&
True/False
。我想按哪个最小的False
排序。我应该如何尝试对它们进行排序
我的第一个想法是将第二维度数组中的每个元素放入一个dict中,并在数组中添加一个包含False数量的键。并以此为基础对它们进行排序。大概是这样的:
{"value": 1, "array": [true, true, false]}
但这对我来说似乎有点麻烦。那么有没有一种优化的方法呢?您可以使用
排序
和键
参数来表示每个列表中的假
数
>>> sorted([[False, False, False], [False, True, True], [False, False, True]], key=lambda x: x.count(False))
[[False, True, True], [False, False, True], [False, False, False]]
这行吗
数组或数组=[
[对,对,错,对],
[真的,真的,真的,真的],
[真,假,假,真],
[假,假,假,假]
]
排序(数组或数组,key=lambda数组:len(数组)-sum(数组),reverse=True)
[[假,假,假,假],
[真,假,假,真],
[对,对,错,对],
[对,对,对,对]]
简单的lambda解决方案:
input_array = [[False,False],[False],[],[False,False,False]]
output_array = sorted(array, key=lambda x: x.count(False))
# output: [[], [False], [False, False], [False, False, False]]
我最喜欢这个,我想用Ankur做的,但我认为这更干净。是的,它们很相似,但我认为直接计数更可读。更可读,更容易推广到其他值。我同意。使用
.count()
要好得多。谢谢,比我想象的要好得多