2017-10-07 82 views
1

我想寫一個理解,給定兩個字典(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'} 

這裏的一個人物是我的函數:

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

爲什麼Python的迴歸似乎什麼是值字符串的最後一個字符,而不是整個字符串?

+0

注意它是如何在最後* *字符兼容,想想什麼'在G值[F [關鍵]'手段。 – jonrsharpe

回答

2

你可以這樣說:

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

爲了更安全,你可以使用g.get(value, 0)萬一g不具有鍵,你要像0的默認值。

如果只需要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

{key : g.get(f[key], None) for key in f}既蟒蛇3和2