Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Not to mention there's often no meaningful way to order by key value since keys can be any hashable values -- so things like this break this idea:

    _dict = {}
    _dict.update({MyObject: 3})
    _dict.update({'MyObject': 3})
There's no ordering over _most_ hashable values since they span multiple types, so insertion ordering is the only sane way to do it.


A sorted map would be tree-based and require its keys to be orderable but not hashable. For instance Rust's HashMap has its key bound on Hash + Eq, while BTreeMap's is bound on Ord.

They're different data structures, with different use cases and different requirements.

> There's no ordering over _most_ hashable values since they span multiple types, so insertion ordering is the only sane way to do it.

Python 2 actually had total ordering of all values. The result was usually stupid but it was there.


>The result was usually stupid but it was there

This is what I meant by "sane" in my comment. It's _way_ more meaningful to the user if data's insertion-ordered.


Well, keys of sorted dictionaries don’t need to be hashable but do need an ordering, whether intrinsic or user-provided. A sorted map (usually implemented in terms of a binary search tree) is simply a separate data type with different requirements than a hash table based one.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: