Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 TypeError: string indices must be integers, not str

I have a piece of code with the following type error:
TypeError: string indices must be integers, not str
I am new to Python and got stuck in my code. Would you please help me figure out whats the problem?
Many thanks

alice = {
    "name": "Alice",
    "homework": [100.0, 92.0, 98.0, 100.0],
    "quizzes": [82.0, 83.0, 91.0],
    "tests": [89.0, 97.0]
tyler = {
    "name": "Tyler",
    "homework": [0.0, 87.0, 75.0, 22.0],
    "quizzes": [0.0, 75.0, 78.0],
    "tests": [100.0, 100.0]
def get_average(student):
    homework = 0
    quizzes = 0
    tests = 0
    for key in student:
        homework =sum(key["homework"])/len(key["homework"])
        quizzes = sum(key["quizzes"])/len(key["quizzes"])
        tests = sum(key["tests"])/len(key["tests"])
    res = 0.1 * homework + 0.3 * quizzes + 0.6 * tests 
    print key["name"], float(res)
student = [alice,tyler]
Please use the forums bbcode tags.

The code shown does not report the error shown, Please show matching code to error traceback.
Your key variable is a string, so key["name"] is indeed trying to index a string with another string. Perhaps you want student["name"]. But it is not clear why you want to iterate on the keys...
Unless noted otherwise, code in my posts should be understood as "coding suggestions", and its use may require more neurones than the two necessary for Ctrl-C/Ctrl-V.
Your one-stop place for all your GIMP needs:
@Ofnuts actually in the above code student is list of dicts, so key is a dict. Yoritz is correct that the above code is not the one that produce this error. However due to the incorect indentation it prints only the last name, res pair.

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  TypeError: string indices must be integers thecoziest 3 2,225 Sep-29-2019, 05:34 PM
Last Post: ichabod801
  please Help. TypeError: list indices must be integers, not str skamaaa01 1 2,288 Feb-04-2018, 12:33 PM
Last Post: Gribouillis
  create a 20 digit string, and cast to a list then add all the digits as integers nikhilkumar 2 2,614 Jul-19-2017, 04:53 PM
Last Post: nilamo

Forum Jump:

Users browsing this thread: 1 Guest(s)