Python中有没有operator.unpack?

时间:2013-02-13 17:08:33

标签: python functional-programming

是否有此内置版本

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

为什么不将解包视为运算符并位于运算符中。*?

我正在尝试做类似的事情(但当然想要解决同一类型的问题):

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或理解

2 个答案:

答案 0 :(得分: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))

答案 1 :(得分: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)))

似乎如果你愿意,可以概括一下这样的东西。