2014-01-22 121 views
0

是否编写了遍历目录并检查某些内容的脚本。 为了简单起见,假设我们有目录a到z,并且检查返回是或否。Python日志消息“乱序”

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

现在让我们假设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 

我该如何做到最好?

+1

我们展示你的代码。 – 2014-01-22 11:41:06

回答

0

如果你可以把你的数据转换成元组或列表的列表,那么你可以使用内置的sort()方法和一个自定义的'cmp'函数。 cmp是一种古老的学校,但你的种类是独一无二的,它是有道理的,回到它。如果您可以更改存储数据的方式 - 即使用0而不是“yes”和1而不是“no”,则可以使用更高效的排序算法。

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元组为一个很好的演练:
http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch20s04.html

0

试试这个:把既肯定又否定道成一个列表,并在年底打印两份名单....