diff --git a/pymbolic/primitives.py b/pymbolic/primitives.py
index 74727a5cd0f38cf52ad2e41fd6d59aa6648b7511..4be517cbee20fd5cc828c33f179ad5331b79e66b 100644
--- a/pymbolic/primitives.py
+++ b/pymbolic/primitives.py
@@ -678,7 +678,9 @@ class CallWithKwargs(AlgebraicLeaf):
     def __getinitargs__(self):
         return (self.function,
                 self.parameters,
-                tuple(sorted(self.kw_parameters.values())))
+                tuple(sorted(
+                    self.kw_parameters.items(),
+                    key=lambda item: item[0])))
 
     mapper_method = intern("map_call_with_kwargs")