如何从列表“Python”打印字典:

时间:2017-03-27 12:51:47

标签: python

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 
===============================================

任何帮助都将受到高度赞赏。

7 个答案:

答案 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成为词典列表。下面我展示了如何执行此操作,并为alicetyler创建了空字典。然后简单地从引号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')