• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

Hash Table 질문있습니다.

23.11.21 20:37 작성 23.11.21 22:02 수정 조회수 186

1

질문1. 해시테이블 (Hash Table)강의 마지막부분에서 파이썬은 딕셔너리로 잘구분되어있다고 하셨는데요. 해쉬테이블이 파이썬에서 딕셔너리인가요?

질문2. 제가 원했던 코드는 dir 라는 딕셔너리 변수에 possible 값이 있으면 그부분을 False로 적용시킬려고 했는데 왜 안되나요?

질문3. 함수내부에서 print(dir)을 하면 딕셔너리가 출력이 되는데 밖에서 하면 <built-in function dir>이런식으로 출력이 됩니다. 배열은 함수 내부나 외부에서도 출력이 잘 되는데 딕셔너리는 직역변수로 인식이 되나요?

질문4. for y in dir: 2번째 for문에 옆에 처럼 안하는 이유는 딕셔너리는 순번이 없어서 그런건가요?

import sys

sys.stdin = open("input.txt", "r")
from collections import deque
def two_sum(nums,target):
    # n=len(nums)
    dir={}
    for x in nums:
        dir[x]=True

    for y in nums:
        possible=target-dir[y]
        if possible in dir:
            dir[possible] = False
    print(dir)#{4: True, 1: True, 9: True, 7: True, 5: True, 3: True, 16: True}
    #제가 원했던 코드는 dir 라는 딕셔너리 변수에 possible 값이 있으면 그부분을 False로 적용시킬려고 했는데 왜 안되나요?
    # 아래처럼요.
    # {4: True, 1: True, 9: True, 7: True, 5: False, 3: True, 16: True}
two_sum(nums=[4,1,9,7,5,3,16],target=14)
print(dir)#<built-in function dir>

답변 1

답변을 작성해보세요.

0

안녕하세요 ekek님

질문1. 해시테이블 (Hash Table)강의 마지막부분에서 파이썬은 딕셔너리로 잘구분되어있다고 하셨는데요. 해쉬테이블이 파이썬에서 딕셔너리인가요?

A. 네 맞습니다. 해시테이블을 파이썬에서 구현한게 딕셔너리입니다.

 

질문2. 제가 원했던 코드는 dir 라는 딕셔너리 변수에 possible 값이 있으면 그부분을 False로 적용시킬려고 했는데 왜 안되나요?

A. dir[y]를 확인해보시면 True값이 나옵니다. 그래서 원하는대로 possible값이 안나오는거에요~ 코드를 수정하는 것을 추천드립니다! 딕셔너리의 value값으로 true를 넣지 않고 값을 넣어야 될 거에요. 한번 제가 제공해드린 코드를 참고하셔서 한번 구현해보는 것도 추천드려요!

image

질문3. 함수내부에서 print(dir)을 하면 딕셔너리가 출력이 되는데 밖에서 하면 <built-in function dir>이런식으로 출력이 됩니다. 배열은 함수 내부나 외부에서도 출력이 잘 되는데 딕셔너리는 직역변수로 인식이 되나요?

파이썬 내부함수중에 dir()이라는 함수가 있네요. 딕셔너리 변수의 이름을 dir은 피해서 사용하는걸 추천드립니다. 그러면 해결돼요!

질문4. for y in dir: 2번째 for문에 옆에 처럼 안하는 이유는 딕셔너리는 순번이 없어서 그런건가요?

필요하면 for문에 딕셔너리를 넣어도 됩니다. 다만 조금 피하는 경향은 있어요 아무래도 파이썬의 버전에 따라 dictionary가 순서를 지키는 경우도 있고 안지키는 경우도 있어서요!

혹시 이해가 안가시는게 있다면 질문주세요~