【发布时间】:2020-01-18 10:27:12
【问题描述】:
我有一个函数,它产生大量数据并将它们存储在一个字典中,该字典将在函数末尾返回。但是有人告诉我,它在内存方面效率不高,我应该在 Python 中使用数据生成器。
例子:
def gen_data(dataz):
data_dict = {"uniqz":[], "random":[]}
for v in dataz:
if dataz[v]["row"] == "ay1":
data_dict["uniqz"].append(dataz[v]["row"])
else:
data_dict["random"].append(dataz[v]["val"])
return data_dict
dataz = {"ax1":{"row":"ay1","val":2},
"ax2":{"row":"ay2","val":3}}
print(gen_data(dataz))
如何转换这段代码并使用数据生成器/yield?
我知道如何生成单个字典数据,例如:
for i in xrange(num_people):
datadict = {
'id': i
}
yield datadict
但在上述场景中,它应该在屈服之前先将所有必要的数据附加到字典中。我该怎么做?
【问题讨论】:
标签: python-3.x generator