top | item 37368645

Just Use Dictionaries (Python)

6 points| david-j-vujic | 2 years ago |davidvujic.blogspot.com

13 comments

order
[+] sametmax|2 years ago|reply
I used to be a strong proponent of this, but I tend to use dataclasses more and more with time. Still use a lot of dicts, lists, and sets, but mostly as collections, rarely to hold one single element data.

It came naturally, not out of some design, but I guess having better and better typing support everywhere makes it more and more convenient.

[+] david-j-vujic|2 years ago|reply
Sounds like a good balance between the approaches!

I usually would prefer having everything behind the endpoint (such as Pydantic schemas & FastAPI) as simple dicts and lists.

[+] jstx1|2 years ago|reply
I like the simplicity but there are some social problems with this. Let's say that I work on a team which has codebases with classes/dataclasses and I add a new codebase that doesn't use them, or one that doesn't _underscore just about everything - the first thing that will come up in the code review is questions about why I'm doing things differently, and I wouldn't have a good reason apart from the fact that I find it more aesthetically pleasing.
[+] david-j-vujic|2 years ago|reply
I agree on that it is a good idea to use patterns that the teams have agreed on.

Would you do the same if you were about to make changes in a code base with only dictionaries and lists in it? :)

[+] chrisjj|2 years ago|reply
> A Python dictionary has a simple & well-known API.

Actually it doesn't.

[+] david-j-vujic|2 years ago|reply
I was referring to the simplistic and well-known way of accessing data from a dictionary, such getting the value for a specific key or even iterating the keys & values of a dictionary. There's also quite simple to merge several dictionaries, or even pick/omit to only work with the data that is actually needed in the actual context. What's your thoughts about that?
[+] JoeyBananas|2 years ago|reply
Except when you need Pandas dataframes or Apache Arrows
[+] david-j-vujic|2 years ago|reply
I haven’t used those tools, but I guess you would use the data types already defined in them and what is returned from the functions in there?

If you were about to pass on the result from a calculation to somewhere else, a dictionary or list would probably be a good idea. You probably wouldn’t want the entire system be aware of a Pandas specific data type.