Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对包含真/假的二维列表进行排序_Python_Arrays_Sorting - Fatal编程技术网

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()
要好得多。谢谢,比我想象的要好得多