key
has to be a callable that returns a value to be sorted. In your case it returns another callable a.data.lower
. You need to call lower
in order to get the value, so the correct form is:
db[count].sort(key=lambda a: a.data.lower())
문제
I am trying to sort a list of objects in Python 3.4 based on the value of the data attribute of each object. If I use
db[count].sort(key=lambda a: a.data)
everything works fine. However, I want the sort to be case insensitive so I use
db[count].sort(key=lambda a: a.data.lower)
but then I get
db[count].sort(key=lambda a: a.data.lower) TypeError: unorderable types: builtin_function_or_method() < builtin_function_or_method()
Any ideas?
해결책
key
has to be a callable that returns a value to be sorted. In your case it returns another callable a.data.lower
. You need to call lower
in order to get the value, so the correct form is:
db[count].sort(key=lambda a: a.data.lower())
다른 팁
You are passing a reference to the lower
method instead of calling it.
Try this:
db[count].sort(key=lambda a: a.data.lower())