我有一个数据结构,它基本上相当于一个嵌套的字典。假设它看起来像这样:
{'new jersey': {'mercer county': {'plumbers': 3,
'programmers': 81},
'middlesex county': {'programmers': 81,
'salesmen': 62}},
'new york': {'queens county': {'plumbers': 9,
'salesmen': 36}}}
现在,维护和创建这个东西相当痛苦;每次我有一个新的州/县/行业,我都必须通过令人讨厌的try/catch块创建下层字典。此外,如果我想遍历所有值,我还必须创建令人恼火的嵌套迭代器。
我也可以使用元组作为键,如下所示:
{('new jersey', 'mercer county', 'plumbers'): 3,
('new jersey', 'mercer county', 'programmers'): 81,
('new jersey', 'middlesex county', 'programmers'): 81,
('new jersey', 'middlesex county', 'salesmen'): 62,
('new york', 'queens county', 'plumbers'): 9,
('new york', 'queens county', 'salesmen'): 36}
这使得对值进行迭代非常简单和自然,但是在执行聚合操作和查看字典子集(例如,如果我只想逐个州地浏览)等操作时,语法上更加繁琐。
基本上,有时我想将嵌套的字典视为平面字典,有时我确实想将其视为复杂层次结构。我可以将所有内容包装在一个类中,但似乎已经有人做过了。或者,似乎有一些非常优雅的语法结构可以实现这一点。
我该如何更好地做到这一点?
补充说明:我知道setdefault()
,但它的语法并不清晰。此外,您创建的每个子字典仍需要手动设置setdefault()
。