class CustomSorter(object):
def __init__(self,alphabet):
self.alphabet=alphabet
def __call__(self,word):
head,tail=self.separate(word1)
key=[self.alphabet.index(head1)]
if len(tail):
key.extend(self(tail))
return key
def separate(self,word):
candidates=self.Candidates(word)
while candidates==[]:
word=word[1:]
candidates=self.Candidates(word)
candidates.sort(key=len)
head=candidates.pop()
tail=word[len(head):]
return head,tail
def Candidates(self,word):
return [letter for letter in self.alphabet if word.startswith(letter)]
Saturday, 9 February 2013
Custom Sorting For Conlangs again
I've just revised that Python code I posted a while back for sorting lists of strings in customized alphabetical orders. I realized that it would be more efficient to implement it as a key function (which is evaluated once per item) rather than a cmp funtion (which is evaluated for each pair of items). Fortunately Python compares lists in a similar way to strings, thus making it possible.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment