Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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 - Fatal编程技术网

Python日志消息“;“故障”;

Python日志消息“;“故障”;,python,Python,如果您已经编写了一个脚本,可以遍历目录并检查某些内容。 为了简单起见,假设我们有a到z的目录,我检查的内容返回Yes或No 通常,它会按遍历顺序打印是或否 现在让我们假设a到e返回yes,f-h返回no,i-z再次返回yes。现在我想打印它,但是我希望它首先打印返回yes的路径,然后打印返回no的路径。因此我们得到: a - yes b - yes ... e - yes i - yes j - yes ... z - yes f - no g - no h - no 如何才能达到最佳效果?

如果您已经编写了一个脚本,可以遍历目录并检查某些内容。 为了简单起见,假设我们有a到z的目录,我检查的内容返回Yes或No

通常,它会按遍历顺序打印是或否

现在让我们假设a到e返回yes,f-h返回no,i-z再次返回yes。现在我想打印它,但是我希望它首先打印返回yes的路径,然后打印返回no的路径。因此我们得到:

a - yes
b - yes
... 
e - yes
i - yes
j - yes
...
z - yes
f - no
g - no
h - no

如何才能达到最佳效果?

尝试以下方法:将“是”和“否”路径放入一个列表,并在末尾打印两个列表……

如果可以将数据放入元组或列表列表,则可以使用内置的sort()方法和自定义的“cmp”函数。cmp有点老派,但你的类型是独一无二的,有理由回到它。如果您能够更改存储数据的方式,则可以使用更高效的排序算法,即使用0代替“是”,使用1代替“否”

data = [('a','yes'),('b','yes'),('e','yes'),('g','no'),('z','yes'),('f','no')]

def tuplecmp(a,b):
    if(a[1]==b[1]):
        return cmp(a[0], b[0])
    if(a[1]=='yes'):
        return -1
    return 1

data.sort(cmp=tuplecmp)
print data
[('a', 'yes'), ('b', 'yes'), ('e', 'yes'), ('z', 'yes'), ('f', 'no'), ('g', 'no')]
这里有一个关于如何为元组使用自定义cmp函数的非常好的演练: