I avoid dictionaries because almost half of their code is duplicated. I usually do this in nested dictionaries, where all sub-dictionaries contain the same keys, but different meanings.
I manually create a large parent dictionary, where each key contains a nested dictionary that will be used in external modules. Nested dictionaries use the same keys to determine configuration parameters. This usage is explicit and works, but it seems silly to repeat or copy / paste keys for each nested dictionary that I create manually. I'm not too concerned about optimizing memory or performance, just wondering if I should do this another, more Pythonic.
As a trivial example and template, you can often see:
people_dict = { "Charles Lindberg": {"address": "123 St.", "famous": True}, "Me": {"address": "456 St.", "famous": False} } >>>people_dict["Charles Lindberg"]["address"] "123 St."
While the dictionary includes explicit code, it is tiresome and error prone to define nested dictionaries with duplicate keys. In this example, half of the nested dictionary is the code duplication code common to all nested dictionaries. I tried to use tuples to eliminate duplicate keys, but found that this leads to fragile code - any change in position (and not the dictionary key) fails. This also leads to the fact that the code is not explicit and difficult to follow.
people_dict = { "Charles Lindberg": ("123 St.", True), "Me": ("456 St.", False), } >>>people_dict["Charles Lindberg"][0] "123 St."
Instead, I write a class to encapsulate the same information: This successfully reduces duplicate code ...
class Person(object): def __init__(self, address, famous=False): self.address = address self.famous = famous people_dict = [ "Charles Lindberg": Person("123 St.", famous=False), "Me": Person("456 St."), ] >>>people_dict["Charles Lindberg"].address "123 St."
Creating a class seems a little redundant ... Standard data types seem too basic ...
I guess the best way to do this is in Python, without having to write your own class?
What is the best way to avoid code duplication when creating nested dictionaries using shared keys?