$[] now returns a dictionary
diff --git a/reclass/values/expitem.py b/reclass/values/expitem.py
index 38e2e3d..8313025 100644
--- a/reclass/values/expitem.py
+++ b/reclass/values/expitem.py
@@ -95,13 +95,12 @@
             raise UndefinedVariableError(str(path))
 
     def _value_expression(self, exports):
-        result = []
+        results = {}
         path = DictPath(self._delimiter, self._expr[0][1]).drop_first()
         for node, items in exports.iteritems():
             if path.exists_in(items):
-                value = { node: copy.deepcopy(self._resolve(path, items)) }
-                result.append(value)
-        return result
+                results[node] = copy.deepcopy(self._resolve(path, items))
+        return results
 
     def _if_expression(self, context, exports):
         export_path = None
@@ -128,7 +127,7 @@
         export_path.drop_first()
         value_path.drop_first()
 
-        results = []
+        results = {}
         for node, items in exports.iteritems():
             if export_path.exists_in(items):
                 export_value = str(self._resolve(export_path, items))
@@ -138,8 +137,7 @@
                 elif test == _NOT_EQUAL and export_value != parameter_value:
                     test_passed = True
                 if test_passed:
-                    result = { node: copy.deepcopy(self._resolve(value_path, items)) }
-                    results.append(result)
+                    results[node] = copy.deepcopy(self._resolve(value_path, items))
         return results
 
     def _get_vars(self, var, export, parameter, value):