On 09/12/2013 08:40 AM, Antoine Pitrou wrote:
Le Thu, 12 Sep 2013 08:05:44 -0700, Ethan Furman firstname.lastname@example.org a écrit :
On 09/12/2013 07:43 AM, Antoine Pitrou wrote:
Yeah, so this is totally silly. What you're basically saying is "we don't need TransformDict since people can re-implement it themselves".
No, what I'm saying is that the "case-preserving" aspect of transformdict is silly. The main point of transformdict is to enable, for example, 'IBM', 'Ibm', and 'ibm' to all match up as the same key. But why? Because you don't trust the user data. And if you don't trust the user data you have to add the correct version of the key yourself before you ever process that data, which means you already have the correct version stored somewhere.
That's assuming there is an a priori "correct" version. But there might not be any. Keeping the original key is important for different reasons depending on the use case:
for case-insensitive dicts, you want to keep the original key for presentation, logging and debugging purposes (*)
for identity dicts, the original key is mandatory because the id() value in itself is completely useless, it's just used for matching
(*) For a well-known example of such behaviour, think about Windows filesystems.
Ah, I see. Thank you for explaining.