【发布时间】:2019-05-29 02:07:41
【问题描述】:
在实例内的列表字典中存储标量值未按预期工作。
我创建了一个类,它接受一个字典,其中的键是数据点的标题,并且具有指向数据(标量值)存储位置的值。
在实例化过程中,另一个字典被创建,我们称之为data_collection,它与输入字典有相同的键,每个键都会得到一个空列表。
在调用实例期间,它应该遍历输入字典的键和值,并将每个输入字典的值附加到data_collection 字典。
当我打印data_collection 时出现问题。期望其中的每个列表的长度为 1,我感到惊讶,每个列表正是键的长度。
我尝试创建 2 个独立字典,它按预期工作,即每个字典条目都有一个长度 = 1 的列表。请帮助!谢谢!
class DataCollector:
def __init__(self, data_points):
self._data_points = data_points
self._data_collection = dict.fromkeys(self._data_points.keys(), list())
def __call__(self):
for name, data_source in self._data_points.items():
self._data_collection[name].append(data_source)
class DumpGenerator:
def __init__(self, x):
self.x = x
dg_1 = DumpGenerator(24)
dg_2 = DumpGenerator(42)
data_collector = DataCollector(data_points={'dg_1': dg_1.x, 'dg_2': dg_2.x})
data_collector()
print(data_collector._data_collection)
预期:
{'dg_1':[24],'dg_2':[42]}
但我得到了:
{'dg_1': [24, 42], 'dg_2': [24, 42]}
【问题讨论】:
标签: python python-3.x list dictionary iteration