我正在做初学者Python课程,目的是制作一堆词典。
- 创建三个词典:lloyd,alice和tyler。
醇>为每个词典提供“名称”,“家庭作业”,“小测验”和 “测试”。
让“name”键成为学生的名字(即劳埃德的名字 应该是“Lloyd”),其他键应该是一个空列表(我们会 尽快填写这些清单!)
我通过以下方式做到了这一点:
def make_dict(list_of_names):
for names in list_of_names:
names = {
"name": names,
"homework" : [],
"quizzes" : [],
"tests" : []
}
list_of_names = ["lloyd", 'alice', 'tyler']
make_dict(list_of_names)
为什么这不起作用?它应该工作,只是Codeacademy开发区域不允许这个工作吗?我意识到我有点多余,而且我可以非常直接地做到这一点,并故意在我如何做到这一点上发挥创意。
在任何情况下,基于输入列表制作字典的自动化方法是什么?
答案 0 :(得分:6)
你在每个循环中创建了一个名为names
的字典,但实际上并没有用它做任何事情 -
def make_dict(list_of_names):
results = []
for names in list_of_names:
names = {
"name": names,
"homework" : [],
"quizzes" : [],
"tests" : []
}
results.append(names)
return results
list_of_names = ["lloyd", 'alice', 'tyler']
my_dicts = make_dict(list_of_names)
这会跟踪您创建的names
个词组,然后在最后将它们提供给您。
答案 1 :(得分:3)
根据列表制作字典的自动化方法是什么? 输入
您可以在此处使用词典理解。生成器可以避免使用样板列表构造代码。在此解决方案中,列表中的每个名称都有<div class="container">
<ul class="status-bar">
<li>
<div>1</div>
<div>foo</div>
</li>
<li>
<div>2</div>
<div>b</div>
</li>
<li>
<div>3</div>
<div>bazjkhj j</div>
</li>
<li>
<div>4</div>
<div>qx</div>
</li>
<li>
<div>5</div>
<div>blahblahblah</div>
</li>
</ul>
</div>
项。调用yield
然后耗尽生成器,我们可以将列表分配给变量list
。
my_dicts
答案 2 :(得分:2)
你正在制作三本词典;但是,每一个都通过分配给同一个变量names
来覆盖前一个,最后一个是垃圾收集,因为对它的唯一引用是当make_dict
返回时超出范围的局部变量。
您只需要返回创建的dict
。对于本练习,听起来并不像你真的需要一个循环。
def make_dict(name):
return {
"name": name,
"homework" : [],
"quizzes" : [],
"tests" : []
}
lloyd = make_dict("lloyd")
alice = make_dict("alice")
tyler = make_dict("tyler")
答案 3 :(得分:-1)
Vegetables={"tamato":40,"carrot":50,"onion":60,"green chillies":20,"red chillies":40,"capsicum":20,"radish":30,"drumstick":40,"beetroot":50,"peas":90}
Print(vegetables)