튜플을 합쳐서 dictionary만들기

keys = ('name', 'age', 'food') values = ('Monty', 42, 'spam') 를 합쳐서 dict = {'name' : 'Monty', 'age' : 42, 'food' : 'spam'} 으로 만들려고 해요. 제가 짠 코드 말고 더 좋은 방법이 있으면 알려주세요

소스코드

keys = ('name', 'age', 'food')
values = ('Monty', 42, 'spam')

dict = {}
map(lambda k, v: dict.update({k: v}), keys, values)

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    아래 코드는 어떠신가요? 먼저, zip([iterable, ...])i번째 tuple이 각 인자의 i번째 원소를 저장하고 있는 list of tuple를 return합니다.

    그다음으로, dict()가 zip()한 결과를 인자로 받아 list item중 첫 번째 objectkey로, 두 번째 objectvalue로 설정한 dict 타입을 return합니다

    keys = ('name', 'age', 'food')
    values = ('Monty', 42, 'spam')
    myzip = zip(keys,values)
    mydict = dict(myzip)
    
    print "---zip(ley, values)---"
    print myzip
    
    print "\n---dict(zip(ley, values))---"
    print mydict
    

    결과)

    ---zip(ley, values)---
    [('name', 'Monty'), ('age', 42), ('food', 'spam')]
    
    ---dict(zip(ley, values))---
    {'food': 'spam', 'age': 42, 'name': 'Monty'}
    

    다음 방법은 위와 비슷한 구조이면서 zip()을 쓰는 것 보다 메모리를 적게 씁니다.

    import itertools
    
    keys = ('name', 'age', 'food')
    values = ('Monty', 42, 'spam')
    mydict = dict(itertools.izip(keys,values))
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.