Eric Stevens wrote:
I am currently designing an address book program, and am trying to design a
method for organizing the keys (which are the names of the entries) for
displaying purposes. I have created a list by doing sortedKeys =
self.addbook.keys() {the self.addbook refers to a dictionary in a custom
class}, and then i try to do a sortedKeys.sort() but never get an
alphabetical list of the keys. All i get is 'None'. I know that a
'list.sort()' returns a None value but all of the tutorials I see show this
giving an alphabetized list.
If you see any tutorial showing list.sort() *returning* a sorted list, the tutorial is wrong. But more likely you have misunderstood what you are seeing.
list.sort() is an in-place list. So you have to do this: mylist = ["Fred", "Wilma", "Barney", "Betty"] mylist.sort() # Returns None, which we don't bother to keep. print(mylist)Or you can use the sorted() function, which returns a new list, leaving the original alone:
mylist = ["Fred", "Wilma", "Barney", "Betty"] print(sorted(mylist)) print(mylist)
I have also tried doing a 'sorted(self.addbook)' which gives me a list but not alphabetized. The dictionary keys I am using are 'Eric', 'Kyle', and 'dfd' and they always appear in that order when i use the sorted() feature (obviously not alphabetized).
Sorting is case sensitive, so "Z" comes before "a". For case insensitive sorting, pass a key function to either sorted() or list.sort():
sorted(mylist, key=string.lower) # Can also use string.upperTechnically, this is not really case-insensitive according to the (very complex!) rules for sorting international text, but if your data is all English (or at least mostly English) you won't notice the difference.
-- Steven _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
