是否有此内置版本
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或理解。
答案 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)))
似乎如果你愿意,可以概括一下这样的东西。