小编sem*_*ite的帖子

带有 Lambda 值的字典更新所有条目

我在 Python 2.7 中。我有两个类和一个命名元组。一个类包含一个字典作为实例属性和一个分配给该字典的函数。(这是情况的一个非常简化的版本)。namedtuple 很简单。另一个类是test_dict通过add_to_test_dict函数调用向其中添加条目的类。

然后我实例化 DictManipulator 并调用test函数:

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)
Run Code Online (Sandbox Code Playgroud)

为什么两个键在那里返回相同的值?我已经进行了足够的实验,可以说原始的 …

python lambda namedtuple python-2.7

3
推荐指数
1
解决办法
288
查看次数

标签 统计

lambda ×1

namedtuple ×1

python ×1

python-2.7 ×1