diff --git a/km3io/definitions/__init__.py b/km3io/definitions/__init__.py
index f9d18d31391b2e59a2cd26145e69dbc9233e49cb..22a8c7d2345e7366fd5bc4cd3709317d0bfd96f1 100644
--- a/km3io/definitions/__init__.py
+++ b/km3io/definitions/__init__.py
@@ -1,5 +1,7 @@
 #!/usr/bin/env python3
 
+from km3io.tools import AttrDict
+
 from .mc_header import data as mc_header
 
 from .trigger import data as trigger
@@ -8,6 +10,12 @@ from .reconstruction import data as reconstruction
 from .w2list_genhen import data as w2list_genhen
 from .w2list_gseagen import data as w2list_gseagen
 
+trigger = AttrDict(trigger)
+fitparameters = AttrDict(fitparameters)
+reconstruction = AttrDict(reconstruction)
+w2list_genhen = AttrDict(w2list_genhen)
+w3list_gseagen = AttrDict(w2list_gseagen)
+
 trigger_idx = {v: k for k, v in trigger.items()}
 fitparameters_idx = {v: k for k, v in fitparameters.items()}
 reconstruction_idx = {v: k for k, v in reconstruction.items()}
diff --git a/km3io/tools.py b/km3io/tools.py
index 0b856e2fafa37063608d21e9cf638a743e5b3f18..d66a45d6062836d411c191b0f3e03a9a88d83ede 100644
--- a/km3io/tools.py
+++ b/km3io/tools.py
@@ -11,6 +11,13 @@ BASKET_CACHE_SIZE = 110 * 1024**2
 BASKET_CACHE = uproot.cache.ThreadSafeArrayCache(BASKET_CACHE_SIZE)
 
 
+class AttrDict(dict):
+    """A dictionary which allows access to its key through attributes."""
+    def __init__(self, *args, **kwargs):
+        super(AttrDict, self).__init__(*args, **kwargs)
+        self.__dict__ = self
+
+
 class cached_property:
     """A simple cache decorator for properties."""
     def __init__(self, function):