Re:Box: Python dictionaries with recursive dot notation access
by johnwheeler on Friday May 05, 2017 @01:03PM
(#14274949)
Nope. It's called developer ergonomics.
[ Parent
| on HN ]
Re:Box: Python dictionaries with recursive dot notation access
by sevensor on Friday May 05, 2017 @01:15PM
(#14275053)
The annoyance here is a feature not a bug. Deeply nested dictionaries, in my experience, are a source of infinite KeyErrors. The problem with using a dictionary as a cheap object is that it's very easy for it to be an object you weren't expecting. Don't nest dictionaries in Python!
Re:Box: Python dictionaries with recursive dot notation access
by Karunamon on Friday May 05, 2017 @01:34PM
(#14275225)
So then what are you supposed to deserialize nested data structures like JSON into? Dictionaries are the obvious "right" way, Python's annoying tooling aside.
Re:Box: Python dictionaries with recursive dot notation access
by sevensor on Friday May 05, 2017 @04:51PM
(#14276747)
I'd say that dictionaries are only the obvious "right" way if you're not planning on accessing any of their fields. Otherwise you have some set of expected fields, in which case you can define a namedtuple and avoid a vast array of nasty surprises. It's really easy to initialize a namedtuple from a dict (use ), as long as the dict has the right fields. If it doesn't, and you're planning on using its fields, the fact that this raises an exception is a good thing.
Re:Box: Python dictionaries with recursive dot notation access
by msellout on Friday May 05, 2017 @07:23PM
(#14277564)
What do you think of this library: https://github.com/selik/destructure
It'll enforce schema and destructure the nested dict/list that results from JSON decoding.
Re:Box: Python dictionaries with recursive dot notation access
by xapata on Friday May 05, 2017 @07:28PM
(#14277594)
That's like asking, "What data structure should I use for this CSV file?"
Depends on the usage. Sometimes you leave them as nested dictionaries and lists. Sometimes you transform them into tabular data. Sometimes you aggregate, etc.
Re:Box: Python dictionaries with recursive dot notation access
by IanCal on Friday May 05, 2017 @01:52PM
(#14275382)
Namedtuples or classes that represent the data, I'd suggest personally.
Re:Box: Python dictionaries with recursive dot notation access
by pdonis on Friday May 05, 2017 @02:40PM
(#14275780)
I would agree. Namedtuple has an asdict method so that reserialization to JSON is simple; you can do the same for a class.
Re:Box: Python dictionaries with recursive dot notation access
by omginternets on Friday May 05, 2017 @02:02PM
(#14275476)
Developer ergonomics does not (always) mean "preventing effort".
If that were true, there would be no type systems.
Re:Box: Python dictionaries with recursive dot notation access
by rhizome on Friday May 05, 2017 @02:44PM
(#14275818)
Part of ergonomics is simplicity about what the thing you're looking at actually is.
Re:Box: Python dictionaries with recursive dot notation access
by swearfu on Friday May 05, 2017 @01:59PM
(#14275450)
No, it's called being terrible at your job. If you need to add complexity to your project just to save you some typing, you have no concept of what you're doing. It's like an accountant not understanding math.
Re:Box: Python dictionaries with recursive dot notation access
by andybak on Friday May 05, 2017 @02:58PM
(#14275944)
Complexity can hide in unexpected places and sometimes a dash of complexity in one place can make something in another place much simpler.
I think this library has it's uses. I wouldn't use it uncritically but I wouldn't dismiss it either.