@Dictionary With Lambda Values atualiza todas as entradas

Estou no Python 2.7. Eu tenho duas classes e uma nomeada dupla. Uma classe abriga um dicionário como um atributo de instância e uma função que atribui a esse dicionário. (Esta é uma versão muito simplificada da situação). O nome nomeado é bastante simples. A outra classe é aquela que adiciona entradas aotest_dict através doadd_to_test_dict chamada de função.

Então instanciao o DictManipulator e chamo otest função:

from collections import namedtuple


class DictHolder(object):
    def __init__(self):
        self.test_dict = {}
    def add_to_test_dict(self, key, val):
        self.test_dict[key] = val

TestTuple = namedtuple('TestTuple', 'name data')

class DictManipulator(object):
    def test(self):
        named_tuple_list = [TestTuple(name='key1', data=1), TestTuple(name='key2', data=1000)]
        self.my_dh = DictHolder()
        for item in named_tuple_list:
            self.my_dh.add_to_test_dict(item.name, lambda: item.data)

my_dm = DictManipulator()
my_dm.test()
print('key1 value: ', my_dm.my_dh.test_dict['key1']())
print('key2 value: ', my_dm.my_dh.test_dict['key2']())
# ('key1 value: ', 1000)
# ('key2 value: ', 1000)

Por que as duas chaves retornam o mesmo valor lá? Eu experimentei o suficiente para dizer que o original named_tuple_list não é atualizado e tentei usarlambda: copy.deepcopy(item.data), mas isso também não funciona. Muito obrigado, pessoal.