在python中定义组合函数

时间:2016-09-28 20:17:07

标签: python composition

输入:两个函数f和g,表示为字典,因此存在g◦f。 output:表示函数g◦f的字典。 例如:给定f = {0:'a',1:'b'}和g = {'a':'apple','b':'banana'},返回{0:'apple',1:'香蕉'}。

最接近正确答案的是{i:g [j] for i in f in j in g}输出{0:'apple',1:'apple'}。我做错了什么?

2 个答案:

答案 0 :(得分:0)

你需要迭代一个dict f,并在理解中,将f的值替换为g

的值
f = {0:'a', 1:'b'}
g = {'a':'apple', 'b': 'banana'}
new_dict = {k: g[v] for k, v in f.items()}
# Value of new_dict = {0: 'apple', 1: 'banana'}

答案 1 :(得分:0)

正确的字典理解是:

{i:g[f[i]] for i in f}

你做了:

{i:g[j] for i in f for j in g}

将每个i的每个i映射到g中的每个值,但随后dict删除了重复的键。

要查看发生了什么,请尝试生成一个列表:

>>> [(i, g[j]) for i in f for j in g]
[(0, 'apple'), (0, 'banana'), (1, 'apple'), (1, 'banana')]

在正确的情况下:

>>> [(i, g[f[i]]) for i in f]
[(0, 'apple'), (1, 'banana')]