首页 > 解决方案 > 避免在 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 并将数据添加到我的端点的输出中。像这样的代码看起来非常难看..有更好的选择吗?

标签: pythonlistfor-loop

解决方案


您可以执行以下操作:

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 个键/属性中的每一个置于循环中来替换重复代码,并在需要时根据需要懒惰地创建空列表。


推荐阅读