I don't think you can (or should want to) do this with lambda. See the answer to the possible duplicate (that I reference under your question) for what you can do.
One way to do something similar would be to simply define a single function which takes two arguments. The value, and some identifier you can use to look up the variable inside the function (eg an object reference or a string).
I might suggest:
object1.value_changed.connect(lambda val: store_var('var1', val))
object2.value_changed.connect(lambda val: store_var('var2', val))
How you implement store_var() of course is highly dependent on the rest of yoru code structure, whether you want to store the values in a dictionary or as global variables or instance attributes. But you shouldn't have any problem accessing the storage location from within your function if you were expecting to be able to access them from within a lambda expression.
Update
Based on your comment I assume the calls to the connect function are inside a method of the class that contains data. This you would define a method of that class as
def store_var(self, name, value):
setattr(self.data, name, value)
and then you would call
object1.value_changed.connect(lambda val: self.store_var('var1', val))