避免在for循环之前声明列表



我有以下一段代码:

results["date"] = []
results["x"] = []
results["y"] = []
results["z"] = []
results["t"] = []
for pv in list(pvlist):
results["date"].append(pv.date)
results["x"].append(pv.x)
results["y"].append(pv.y)
results["z"].append(pv.z)
results["t"].append(pv.t)

我想循环遍历所有pv并将数据添加到端点的输出中。代码看起来非常丑陋,就像这样…有更好的选择吗?

您可以这样做:

for pv in pvlist:  # pvlist is an iterable already
for key in ("date", "x", "y", "z", "t"):
results.setdefault(key, []).append(getattr(pv, key))

这将取代你发布的整个代码片段。它通过将5个键/属性中的每个键/属性放入循环中来替换重复的代码,并在需要时惰性地创建空列表。

最新更新