"multidimensionales" get für Dictionaries
Verfasst: Mittwoch 19. Juli 2017, 13:58
Hallo,
ich habe ein Dictionary, das mehrere Dictionaries enthält und will auf dessen
Elemente direkt zugreifen können. Dazu habe ich eine Subklasse von dict
geschrieben, die wie folgt aussieht:
Scheint auch zu funktionieren:
Gibt es vielleicht schon ein verbreitetes Modul, das so was besser macht
(z.B. enthaltene Dictionaries haben diese Eigenschaft auch)?
Welche Probleme seht ihr mit dieser Implementierung?
ich habe ein Dictionary, das mehrere Dictionaries enthält und will auf dessen
Elemente direkt zugreifen können. Dazu habe ich eine Subklasse von dict
geschrieben, die wie folgt aussieht:
Code: Alles auswählen
class MultiDict(dict):
def multiget(self, keys, default=None):
subtree = self
for k in keys:
try:
subtree = subtree.get(k)
except AttributeError:
# kein Attribut 'get' im Subtree
return default
except TypeError:
# get ist kein callable oder erwartet
# andere Parameter
return default
return subtree
Code: Alles auswählen
In [4]: mydict
Out[4]: {'foo': {'bar': 'baz'}, 'qux': 'quux'}
In [5]: md = MultiDict(mydict)
In [6]: md.multiget(['foo', 'bar'])
Out[6]: 'baz'
In [7]: md.multiget(['qux'])
Out[7]: 'quux'
In [8]: print(md.multiget(['qux', 'quux']))
None
(z.B. enthaltene Dictionaries haben diese Eigenschaft auch)?
Welche Probleme seht ihr mit dieser Implementierung?