2016-09-28 18 views
1

入力:g◦fが存在するような、辞書として表される2つの関数fとg。出力:関数g◦fを表す辞書。 例:f = {0: 'a'、1: 'b'}、g = {'a ':' apple '、' b ':' banana '}、return {0:' apple ' 'バナナ'}。Pythonで定義関数がスタックされていません

正解に最も近いのは、{0: 'apple'、1: 'apple'}を出力する{i:g [j] for f in i}です。私は間違って何をしていますか?

+1

[Pythonの:2つの辞書を作成するために理解]の可能性のある重複した代わりに、リストを生成してみてください、何が起こっているかを確認するに

ます(http: //stackoverflow.com/questions/17846545/python-comprehension-to-compose-tw-dictionaries) –

答えて

0

あなただけの1つのdict 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'} 
0

の値とfの値を置き換える正しいdictの内包表記は次のようになります。

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

あなたはそうでした:

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

igのすべての値に設定しますが、重複したキーは削除されます。正しい場合

>>> [(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')] 
関連する問題