In the next code, I’m getting a KeyError when I’m trying to add a new key to a dictionary.
def tournamentWinner(competitions, results):
record = {}
winner = None
for i in range(len(results)):
if results[i] == 0:
if record[competitions[i][1]] not in record:
record[competitions[i][1]] = 3
else:
record[competitions[i][1]] += 3
else:
if record[competitions[i][0]] not in record:
record[competitions[i][0]] = 3
else:
record[competitions[i][0]] += 3
for element in record:
if winner is None:
winner = element
if element > winner:
winner = elemnt
return winner
I am getting this KeyError:
Exception Detected:
Traceback (most recent call last):
File "/tester/program.py", line 7, in tournamentWinner
if record[competitions[i][1]] not in record:
KeyError: 'C#'
>Solution :
You’re getting that error because competitions[i][1] key doesn’t exist in record at the time you check for it with if-else.
You can get around this problem by using dict.get method:
Instead of this if-else:
if record[competitions[i][1]] not in record:
record[competitions[i][1]] = 3
else:
record[competitions[i][1]] += 3
you can use
record[competitions[i][1]] = record.get(competitions[i][1], 0) + 3