Why does this work in jython and not in python?
Skip Montanaro
skip at pobox.com
Wed Jun 18 13:28:48 EDT 2003
Roman> I'm sorting a list of dictionaries based on a particular
Roman> key. Using the code below, the list gets sorted in jython, but
Roman> not in python. I'm using python 2.2.1 and jython 2.1.
The function passed to sort must return three values, not two. Try this
instead:
tdict = [{'a':5}, {'a':3},{'a':4},{'a':2},{'a':1}]
def sort_func(one, two):
return cmp(one['a'],two['a'])
print tdict
tdict.sort(sort_func)
print tdict
Here's output w/ Python 2.3b1+:
>>> tdict = [{'a':5}, {'a':3},{'a':4},{'a':2},{'a':1}]
>>>
>>> def sort_func(one, two):
... return cmp(one['a'],two['a'])
...
>>> print tdict
[{'a': 5}, {'a': 3}, {'a': 4}, {'a': 2}, {'a': 1}]
>>> tdict.sort(sort_func)
>>> print tdict
[{'a': 1}, {'a': 2}, {'a': 3}, {'a': 4}, {'a': 5}]
That it worked for Jython 2.1 and not Python 2.2.1 was probably just due to
differences in the underlying implementation details.
Skip
More information about the Python-list
mailing list