2017-10-07 17 views
1

2つの辞書(f、g)を指定すると、そのキーがfのキーであり、その値が対応するキーのfの値である辞書を返すという理解を書こうとしていますgの値の例えば、与えられた:Pythonの辞書値からのアクセス文字列

f = {0: 'a', 1: 'b'} 
g = {'a': 'apple', 'b': 'banana'} 
my_function_composition(f, g) #returns {0: 'apple', 1: 'banana'} 

を文字列のみここ

#output: {0: 'e', 1: 'a'} 

の1つの文字が私の関数である出力何らかの理由で私の理解:

def my_function_composition(f, g): 
    return {key: value for key in f for value in g[f[key]]} 

なぜPythonはと思われるもの戻っています文字列全体ではなく、値文字列の最後の文字ですか?

def my_function_composition(f, g): 
    return {key: g[value] for key, value in f.items()} 

は、あなたがその鍵を持っていない場合gg.get(value, 0)を使用することができ、より安全にするために、あなたは0のようなデフォルト値をしたい:

+0

それは*最後だ方法をお知らせ*文字の両方に対応{key : g.get(f[key], None) for key in f}、およびgの値のためにどのような ''手段[キー] [F]を考えます。 – jonrsharpe

答えて

2

あなたはこのようにそれを行うことができます。

g辞書にあるfの値だけが必要な場合は、valueの追加チェックを追加できます。

def my_function_composition(f, g): 
    return {key: g[value] for key, value in f.items() if value in g} 
+0

私のソリューションを投稿する前にこれを見たことがありませんでした –

0
def my_function_composition(f, g): 
    return {key1: value2 for key1, value1 in f for key2, value2 in g if value1==key2} 
0

のpython 3と2

関連する問題