【发布时间】:2021-03-14 00:32:58
【问题描述】:
是否有一种干净的内联方式来定义具有.add 或.append 的for 循环?例如,考虑以下for 循环:
import collections
s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
d = collections.defaultdict(set)
for k, v in s:
d[k].add(v)
我可以考虑像下面的代码那样内联写它,但它看起来并不干净:
_ = [d[k].add(v) for k, v in s]
有没有更好的方法,例如使用itertools.accumualte?类似的东西
d = ...
【问题讨论】:
-
你想通过使其“内联”来实现什么?使用明确的
for循环很好。如果您经常这样做,请将其放入函数中(或使用库;在这种情况下,查找“multi dict”或“bag”)。 -
我认为,你的代码很干净 :) 实际上,它很干净。
-
我本人通常是 itertools 的忠实拥护者,甚至我也同意您拥有的代码可能是最简洁的方式。坚持这种本能,因为它很好,但我认为它不适用于这种情况。
标签: python python-3.x for-loop inline