【发布时间】:2017-12-27 20:00:30
【问题描述】:
我想实现这个:
asset_hist = []
for key_host, val_hist_list in am_output.asset_history.items():
for index, hist_item in enumerate(val_hist_list):
row = collections.OrderedDict([("computer_name", key_host), ("id", index), ("hist_item", hist_item)])
asset_hist.append(row)
使用列表推导。这是我能得到的最接近的:
asset_hist = [collections.OrderedDict([("computer_name", key_host), ("id", index), ("hist_item", hist_item)]) for index, hist_item in enumerate((val_hist_list, key_host)[0]) for key_host, val_hist_list in am_output.asset_history.items()]
【问题讨论】:
-
不要?可读性远比简洁重要。
-
您或其他人之后是否需要阅读它?如果你写起来有困难......
-
我完全理解你的担忧......但是阅读这个,是什么导致我提出这个问题,因为列表理解不使用附加:stackoverflow.com/questions/45240116/…
-
您的理解中的 for 子句被颠倒了。它们应该与嵌套循环的顺序相同。
-
.append绝对不是你的问题。列表理解使用完全相同的底层操作无论如何,它只是没有方法解析开销,这是最小的,并且不能解释它挂了几个小时......
标签: python list list-comprehension enumerate items