lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
students = ["lloyd","alice","tyler"]
#Accessing Dictionary from List
print students[0]['name']
期待的是:Lloyd
每当我运行上面的代码时,我都会收到此错误,
===============================================
Traceback (most recent call last):
File "python", line 30, in <module>
TypeError: string indices must be integers
===============================================
任何帮助都将受到高度赞赏。
答案 0 :(得分:3)
这是因为学生只包含字符串[“lloyd”,“alice”,“tyler”]
print students[0]
>> "lloyd"
也许你想这样做:
students = [lloyd]
然后
print students[0]['name']
应该有效
答案 1 :(得分:1)
您可能希望将字典放在列表中,而不仅仅是字符串名称。
lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {"name": "Alice "}
tyler = {"name": "Tyler "}
students = [lloyd, alice, tyler]
print students[0]['name']
答案 2 :(得分:0)
运行以下命令:
print students[0]
它会提供您想要的输出。
答案 3 :(得分:0)
目前,students
只是一个字符串列表。因此students[0]
的值是一个字符串'lloyd'
,它与您使用名称lloyd
创建的字典不同。
我认为您希望students
成为词典列表。下面我展示了如何执行此操作,并为alice
和tyler
创建了空字典。然后简单地从引号students
中取出引号来存储字典而不是具有相同名称的字符串,并且最后一行有效。
lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {"name": "Alice"}
tyler = {"name": "Tyler"}
students = [lloyd,alice,tyler]
print students[0]['name']
给出:
Lloyd
答案 4 :(得分:0)
您没有使用顶部定义的字典lloyd。当您使用students = [“lloyd”,“alice”,“tyler”]创建列表时,您将使用字符串“lloyd”。 所以学生[0]返回此字符串而不是字典。
你需要使用学生= [lloyd,alice,tyler]。您可能还想为alice和tyler创建一个字典。
答案 5 :(得分:0)
你所尝试的几乎是正确的。您收到错误,因为“字符串索引必须是整数”。所以你可以在python(python-eval-method)中使用eval()方法。
尝试以下代码
lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
students = ["lloyd","alice","tyler"]
#Accessing Dictionary from List
print eval(students[0])['name']
它会起作用
答案 6 :(得分:0)
您的students
列表仅包含str
个对象。
print students[0]
>> "lloyd"
你可以看到我们得到了str
对象类型。
您应该使用此用法和引号的删除来修复它:
students = [lloyd]
print students[0]['name']
完成! :)
使用get
方法更好地使用dict:
print students[0].get('name')