ABOUT ME

-

Total
-
  • #3 파이썬 dictionary 딕셔너리 이용
    컴퓨터/파이썬 2020. 6. 20. 14:18
    728x90
    반응형

    기본 문법

    키, 값, print, update(), 

    test_dic = {'a': {'b': 'c'}, 'd': 'e'}
    
    print(test_dic['a']['b']) # 출력 : 'c'
    
    test_dic['a'].update({'o': {'f': 'e'}})
    print(test_dic) # {'a': {'b': 'c', 'o': {'f': 'e'}}, 'd': 'e'}
    

    keys(), values(), in, items()

    test_dic = {'a': {'b': 'c'}, 'd': 'e'}
    
    print(test_dic.keys()) 
    # dict_keys(['a', 'd']) 최상위 key들만 표시됨
    
    print(test_dic.values())
    # dict_values([{'b': 'c', 'o': {'f': 'e'}}, 'e']) 최상위 key들 안 값들 표시
    
    print('a' in test_dic.keys()) # 출력 : True
    print('e' in test_dic.values()) # 출력 : True
    
    # key,value 같이 출력하기
    for key, value in test_dic.items():
    	print(key, value)
        
     # 출력 : 'd', 'e' (nested dictionary는 출력 안됨)

    2. key 안에 key 추가하여 값 찾기

    dic = {'a': {'b': 'c'}, 'd': 'e'}
    
    def findNestedValue(value, dic):
        if value in dic:
            return dic[value]
        for val in dic.values():
            if isinstance(val, dict):
                return findNestedValue(value, val)
        return None
        
    print(findNestedValue('b', dic)
    # 출력 : 'c'

    3. key안에 key : value 계속 추가하기 (create nested dictionary)

    dictionary를 node라고 생각하면 편해진다. (suffix-trie를 만들 때 사용할 수 있다)

    test_dic = {}
    node = test_dic
    string = 'abcd'
    
    for i in range(len(string)):
        char = string[i]
        if char not in node:
            node[char] = {}  # 없으면 새 노드 만들기
        node = node[char]
        
    print(test_dic)
    # {'a': {'b': {'c': {'d': {}}}}}

     

    728x90

    댓글