2017-10-07 1 views
1

두 개의 사전 (f, g)이 주어진 경우 키가 f 인 키와 값이 해당 키의 f 값인 사전을 반환한다는 이해력을 쓰려고합니다. g 값의 예를 들어, 주어진 :파이썬에서 사전 값의 액세스 문자열

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

왜 파이썬은 반환 무엇에 보인다

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: 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

파이썬 3는 * 마지막 * 캐릭터의 방법이