Search code examples
pythondictionaryuser-inputkeyerror

Python: key error for using user input as dict key


When I am taking a user input of the num variable, I am getting a key error. But if I assign a value to that variable, then it's working fine. Why am I getting a key error for taking a user input of the key?

f = open("GUTINDEX.ALL", "r", encoding="utf-8")
string = f.read()
f.close()
bookList = string.split('\n\n')
etextDict = {}
x = len(bookList)
for book in bookList:
    etextDict[x] = book
    x -= 1

num = input('Search by ETEXT NO:')
print(etextDict[num])
num=1
print(etextDict[num])

Solution

  • The input is read as a string, while on your use case (when working), num is an integer. Just convert the string to integer:

    f = open("GUTINDEX.ALL", "r", encoding="utf-8")
    string = f.read()
    f.close()
    bookList = string.split('\n\n')
    etextDict = {}
    x = len(bookList)
    for book in bookList:
        etextDict[x] = book
        x -= 1
    
    num = input('Search by ETEXT NO:')
    print(etextDict[int(num)])  # <- changed this line
    num=1
    print(etextDict[num])