我正在创建一个简单的GUI应用程序来管理未知单词,同时学习一门新语言。不过,我有一个列表,我试图按字母顺序排序,从A到Z:
def sort_words(self):
sorted_words = sorted(self.words)
self.listBox.delete(0, END)
for item in sorted_words:
self.listBox.insert(END, item.wordorphrase)
问题是我得到了:
/usr/bin/python3.5 /home/cali/PycharmProjects/Vocabulary/Vocabulary.py
Traceback (most recent call last):
File "/home/cali/PycharmProjects/Vocabulary/Vocabulary.py", line 361, in <module>
main()
File "/home/cali/PycharmProjects/Vocabulary/Vocabulary.py", line 355, in main
gui = Vocabulary(root)
File "/home/cali/PycharmProjects/Vocabulary/Vocabulary.py", line 28, in __init__
self.load_words()
File "/home/cali/PycharmProjects/Vocabulary/Vocabulary.py", line 153, in load_words
self.sort_words()
File "/home/cali/PycharmProjects/Vocabulary/Vocabulary.py", line 156, in sort_words
sorted_words = sorted(self.words)
TypeError: unorderable types: Word() < Word()
Process finished with exit code 1
请注意,它是Word对象的列表,而不是字符串。
我怎样才能对我的话进行排序?
答案 0 :(得分:3)
尝试sorted(self.words, key=str)
,它应该将您的单词作为字符串进行比较。
只有在为单词定义__str__
方法(或在python2的情况下为__unicode__
)时才有效。如果你没有,请使用下一个lambda:
sorted(self.words, key=lambda word: word.attr_where_you_store_actual_string)