lina wrote:
May I ask which role the __repr__ plays here?
... weight[elem.__repr__()] += 1
... else:
... weight[elem.__repr__()] = 1
...
You should never call elem.__repr__(), any more than you would call
elem.__len__() or elem.__str__().
(Well, technically there *are* rare uses for calling such double
underscore special methods directly, but this is not one of them!)
Instead, you should call repr(elem), len(elem), str(elem).
The purpose here is to convert the sublist, elem, which is unhashable,
into something which is hashable. Strings are hashable, and so if you
use repr() to convert it into a string, you can use it in a dictionary.
I don't see any advantage to using repr() instead of str(). Given the
data you are working with, there is no difference:
py> str([['1', '2'], ['33', '44']])
"[['1', '2'], ['33', '44']]"
py> repr([['1', '2'], ['33', '44']])
"[['1', '2'], ['33', '44']]"
In my opinion, turning objects into strings unnecessarily is not good
practice. Better to use a tuple than a string.
--
Steven
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor