파이썬 딕셔너리 for문에서 ValueError: too many values to unpack

조회수 4515회
n = int(input('Enter number of products : '))
prod = {}
for i in range(n):
    ProductName = input('Enter product name : ')
    ProductPrice = int(input('Enter its price : '))
    prod[ProductName] = ProductPrice

print(prod)        #prod = {'prod1': 100, 'prod2': 200, 'prod3': 300}



ProductName = input('enter price')
print(ProductName)

for ProductName, prod[ProductPrice] in prod:
    if prod[ProductName] < ProductName:
    print(ProductName)

ProductName 에 200을 입력했을때 200 보다 작은 100값을 갖고 있는 prod1을 출력하고 싶은데 에러가 발생합니다. 도움 부탁드립니다.

Traceback (most recent call last):
File "C:/2학년 파일/건설플랜트입문/#11.Dictionaries_Exercise/#2.py", line 28, in <module>
for ProductName, prod[ProductPrice] in prod:
ValueError: too many values to unpack (expected 2)

2 답변

  • dictionary는 for loop에서 key을 반환합니다.
    key, value 둘 다 동시에 사용하고 싶으면 아래와 같이 사용하세요.

    d = {'a': 1, 'b': 2, 'c': 3}
    for k in d:
        print(k)  # 'a', 'b', 'c'
    for k, v in d.items():
        print((k, v))  # ('a', 1), ('b', 2), ('c', 3)
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
  • prod = {'prod1': 100, 'prod2': 200, 'prod3': 300}
    _input = 200
    for key in prod: #
        if prod[key] < _input:
            print(key)
    

    #에서보면 prod는 딕셔너리의 키값 prod1, prod2, prod3 값을 갖고 있기에 2개로 unpack 할수가 없는게 에러의 내용입니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)