"Volker Grabsch" <[EMAIL PROTECTED]> schrieb im Newsbeitrag news:[EMAIL PROTECTED] | vincent wehren wrote: | > | > If you don't care about the year, why not just "normalize" the year | > to all be the same using the replace method of the date instance? | | That's a very bad idea. In my example, this would work, but in "reality" | I don't sort datetime objects, of course! (Is there any real application | where you want to do that?) | | Instead, I'm sorting "Person" objects using a "birthday" attribute. | Since I use these Person objects also in other places, they should never | be modified without just to be sorted. In general, the number side effects | should always be minimized.
Can you explain where you see a modification to the orginal object happening? (or in any of the other solutions proposed for that matter...) Not here I hope: | | > datesNorm = [obj.replace(year=1900) for obj in (dates)] | > datesNorm.sort() If you print datesNorm, you'll see: [datetime.date(1900, 12, 2), datetime.date(1900, 12, 3), datetime.date(1900, 12, 6), datetime.date(1900, 12, 7)] However, dates is still the same: [datetime.date(2004, 12, 2), datetime.date(2001, 12, 3), datetime.date(2002, 12, 6), datetime.date(1977, 12, 7)] | | This code would go bad especially in my situation, where my "Person" | objects are SQLObjects, thus the "normalisation" would be written into | the database. Okay, one could use transactions and rollback", but I | think, my point is clear now. Since you wouldn't need to change the attribute object to perform a sort (on the instances) using it (or portions of it) as key, it's not. Or is there something fundamental I am missing about your particular use case? | Nevertheless, I think you idea is very interesting. Is there any "real" | application where normalizing just for sorting would be reasonable? How about a case-insensitive sort of strings? (uppering being the normalization step) Or getting rid of accented / special characters before sorting. These sound like fairly straight-forward use cases to me ;) Anyway, I was doing some SQL this morning where getting rid of portions of 'datetime' fields in a WHERE clause is sometimes just the ticket - hence the connection. -- Vincent | | -- | Volker Grabsch | ---<<(())>>--- | \frac{\left|\vartheta_0\times\{\ell,\kappa\in\Re\}\right|}{\sqrt | [G]{-\Gamma(\alpha)\cdot\mathcal{B}^{\left[\oint\!c_\hbar\right]}}} -- http://mail.python.org/mailman/listinfo/python-list