在 Python 循环中定义多个字典

use*_*377 5 python dictionary loops

我想要做的是定义三个非常相似的词典,只有细微的差别。如果您认识到这一点,这是 Codeacademy 的 Python 课程中的问题之一,我希望做得更优雅一些。无论如何,这就是我所拥有的:

import string
for name in ["lloyd", "alice", "tyler"]:
    name = {"name": string.capitalize(name), "homework": [], "quizzes": [], "tests": []}
Run Code Online (Sandbox Code Playgroud)

这不起作用。我想要的是三个字典,其中的名称为“lloyd”、“alice”和“tyler”,并带有他们名字的键(但大写)、“作业”、“测验”和“测试”

澄清一下,我想要的输出相当于:

lloyd = {"name": "Lloyd", "homework": [], "quizzes": [], "tests": []}
alice = {"name": "Alice", "homework": [], "quizzes": [], "tests": []}
tyler = {"name": "Tyler", "homework": [], "quizzes": [], "tests": []}
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 7

我认为您可以创建一个名称字典,其中每个名称都指向一个字典,而不是为每个名称创建一个变量。

>>> names=["lloyd", "alice", "tyler"]
>>> keys=["homework", "quizzes", "tests"]
>>> dic={ name.capitalize():{ key:[] for key in keys} for name in names}
>>> dic
{'Tyler': {'quizzes': [], 'tests': [], 'homework': []}, 
 'Lloyd': {'quizzes': [], 'tests': [], 'homework': []},
 'Alice': {'quizzes': [], 'tests': [], 'homework': []}}
Run Code Online (Sandbox Code Playgroud)

现在访问Tyler只需使用:

>>> dic['Tyler']
{'quizzes': [], 'tests': [], 'homework': []}
Run Code Online (Sandbox Code Playgroud)