diff --git a/python/dune/perftool/sumfact/symbolic.py b/python/dune/perftool/sumfact/symbolic.py
index 0cbb6b814b13b3f60bacc065ea539ed0a8a37af5..790548f1b99a9cd36d8e3c395890debb419c2cec 100644
--- a/python/dune/perftool/sumfact/symbolic.py
+++ b/python/dune/perftool/sumfact/symbolic.py
@@ -120,8 +120,9 @@ class SumfactKernel(SumfactKernelBase, ImmutableRecord, prim.Variable):
 
         # The following construction is a bit weird: Dict comprehensions do not have
         # access to the locals of the calling scope: So we need to do the eval beforehand
-        defaults = [eval(a) for a in SumfactKernel.init_arg_names]
-        defaultdict = {a: defaults[SumfactKernel.init_arg_names.index(a)] for a in SumfactKernel.init_arg_names}
+        defaultdict = {}
+        for a in SumfactKernel.init_arg_names:
+            defaultdict[a] = eval(a)
 
         # Call the base class constructors
         ImmutableRecord.__init__(self, **defaultdict)
diff --git a/python/dune/perftool/sumfact/vectorization.py b/python/dune/perftool/sumfact/vectorization.py
index 217d22deedd1d5e6f036fc395082cfc21862cc62..6900885499385a62fc9dbca9d1e9adac7e444551 100644
--- a/python/dune/perftool/sumfact/vectorization.py
+++ b/python/dune/perftool/sumfact/vectorization.py
@@ -166,19 +166,23 @@ def decide_vectorization_strategy():
         for inputkey in inputkeys:
             width = get_vcl_type_size(np.float64)
             sumfact_filter = [sf for sf in sumfacts if sf.input_key == inputkey]
-            sfdict.update(**horizontal_vectorization_strategy(sumfact_filter, width))
+            for old, new in horizontal_vectorization_strategy(sumfact_filter, width).items():
+                sfdict[old] = new
     elif get_option("vectorize_slice"):
         for sumfact in sumfacts:
             width = get_vcl_type_size(np.float64)
-            sfdict.update(**vertical_vectorization_strategy(sumfact, width))
+            for old, new in vertical_vectorization_strategy(sumfact, width).items():
+                sfdict[old] = new
     elif get_option("vectorize_diagonal"):
         inputkeys = set(sf.input_key for sf in sumfacts)
         for inputkey in inputkeys:
             width = get_vcl_type_size(np.float64)
             sumfact_filter = [sf for sf in sumfacts if sf.input_key == inputkey]
-            sfdict.update(**diagonal_vectorization_strategy(sumfact_filter, width))
+            for old, new in diagonal_vectorization_strategy(sumfact_filter, width).items():
+                sfdict[old] = new
     else:
-        sfdict.update(**no_vectorization(sumfacts))
+        for old, new in no_vectorization(sumfacts).items():
+            sfdict[old] = new
 
     # Register the results
     for sf in sumfacts: