在Python中定义组合函数

问题描述:

输入:两个函数f和g,表示为字典,使得g◦f存在。输出:表示函数g◦f的字典。 举例:给出f = {0:'a',1:'b'}和g = '香蕉'}。在Python中定义组合函数

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

+1

的可能的复制[Python的:理解撰写两个字典(HTTP: //*.com/questions/17846545/python-comprehension-to-compose-two-dictionaries) –

你只是需要遍历一个快译通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'} 

值替代F的值的正确字典的理解是:

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

你做到了:

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

我把每一个都映射到每一个ig中的每个值,但随后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')]