【发布时间】:2014-02-02 11:15:59
【问题描述】:
试图想出一个单线来实现以下目标(对一个键的所有值求和):
>>> data = [('a',1),('b',3),('a',4),('c',9),('b',1),('d',3)]
>>> res = {}
>>> for tup in data:
... res[tup[0]] = res.setdefault(tup[0],0) + tup[1]
...
>>> res
{'a': 5, 'c': 9, 'b': 4, 'd': 3}
单行版本,不使用任何导入,如 itertools、collections 等。
{ tup[0] : SELF_REFERENCE.setdefault(tup[0],0) + tup[1] for tup in data }
是否可以在 Python 中使用对当前正在理解的对象的引用? 如果没有,是否有任何方法可以在不使用任何导入的情况下在单行中实现这一点,即使用 基本的列表/字典理解和内置函数。
【问题讨论】:
-
SELF_REFERENCE正在建设中,在理解中:) -
你可以改为
sum((Counter(dict([x])) for x in data), Counter())...
标签: python list-comprehension dictionary-comprehension