3

是否有任何内置版本

def unpack(f, a):
    return f(**a) #or ``return f(*a)''

为什么unpack不被认为是一个运算符并且位于 operator.* 中?

我正在尝试做与此类似的事情(但当然想要针对同一类型问题的通用解决方案):

from functools import partial, reduce
from operator import add
data = [{'tag':'p','inner':'Word'},{'tag':'img','inner':'lower'}]
renderer = partial(unpack, "<{tag}>{inner}</{tag}>".format)
print(reduce(add, map(renderer, data)))

就像不使用 lambdas 或 comprehensions一样。

4

2 回答 2

4

这不是解决这个问题的方法。怎么样

print(''.join('<{tag}>{inner}</{tag}>'.format(**d) for d in data))

以 Pythonic 风格呈现的相同行为。

编辑:既然你似乎反对使用 Python 的任何好的特性,那么这个怎么样:

def tag_format(x):
    return '<{tag}>{inner}</{tag}>'.format(tag=x['tag'], inner=x['inner'])
results = []
for d in data:
    results.append(tag_format(d))
print(''.join(results))
于 2013-02-13T17:13:34.377 回答
0

我不知道有一个运算符可以做你想做的事,但你真的不需要它来避免 lambdas 或理解:

from functools import reduce
from operator import add
data = [{'tag':'p','inner':'Word'},{'tag':'img','inner':'lower'}]
print(reduce(add, map("<{0[tag]}>{0[inner]}</{0[tag]}>".format, data)))

如果您愿意,似乎可以概括这样的事情。

于 2013-02-13T19:30:38.947 回答