輸入:兩個函數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'}。我究竟做錯了什麼?
輸入:兩個函數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'}。我究竟做錯了什麼?
你只是需要遍歷一個快譯通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}
我把每一個都映射到每一個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')]
的可能的複製[Python的:理解撰寫兩個字典(HTTP: //stackoverflow.com/questions/17846545/python-comprehension-to-compose-two-dictionaries) –