入力: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}です。私は間違って何をしていますか?
入力: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つの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'}
の値とfの値を置き換える正しいdictの内包表記は次のようになります。
{i:g[f[i]] for i in f}
あなたはそうでした:
{i:g[j] for i in f for j in g}
i
をg
のすべての値に設定しますが、重複したキーは削除されます。正しい場合
>>> [(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の:2つの辞書を作成するために理解]の可能性のある重複した代わりに、リストを生成してみてください、何が起こっているかを確認するに
ます(http: //stackoverflow.com/questions/17846545/python-comprehension-to-compose-tw-dictionaries) –