我正在阅读关于python的Code Academy课程,一堂课要求你做以下几点。
将三个词典命名为" lloyd"," alice"和" tyler。然后,对于每个字典集,键名等于" Lloyd"," Alice"和" Tyler"分别。然后每个字典应该有三个键(家庭作业,测验和测试)等于空列表。
我想出了这个:
students = ["lloyd", "alice", "tyler"]
for x in students:
# capitalize first letter in name
capital_name = x[0].upper() + x[1:]
# make empty dictionary with student's name
exec("%s = {}" % x)
# define keys. For name, set equal to name with capitalized first letter
exec("%s['name'] = capital_name" % x)
exec("%s['homework'] = []" % x)
exec("%s['quizzes'] = []" % x)
exec("%s['tests'] = []" % x)
eval("print(%s)" % x)
我在最后添加了打印以确认我做了什么。我已经学会了在循环中使用Stata进行编程,这实际上是根据字面意思来评估你的循环(它执行exec / eval没有任何其他命令)。
如果有1000名学生,为每个学生手动定义字典是不明智的,那么除了我刚刚展示的内容之外你会怎么做?
答案 0 :(得分:0)
这是另一种方法,通过设置一个主要词典,将每个学生的信息作为字典保存。
students = ["lloyd", "alice", "tyler"]
students_dicts = {}
for s in students:
students_dicts[s.capitalize()] = {'homework': [], 'quizzes': [], 'tests': []}
# if the single dicts is demanded, loop for them
for st in students_dicts:
print("%s => " % st, students_dicts[st])
除非课程是关于元编程的,否则这应该足够了。