如果你可以把你的数据转换成元组或列表的列表,那么你可以使用内置的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
我们展示你的代码。 – 2014-01-22 11:41:06