我正在尝试迭代,例如,dict1,其中包含两个项目列表的键,字符串。还有另一个有四个条目的字典(dict2)。这些条目的键是dict1中列表中唯一可能的四个字符串。当我遍历dict1时,我希望程序选择列表中的第一项,然后在dict2中找到该键,这样我就可以根据迭代的内容访问它们的整数值。字符串是相同的,所以如果正确访问它应该工作?这是我的代码:
hogwarts_students = { "A" : ["Gryffindor", "Slytherin"],"B" : ["Hufflepuff", "Ravenclaw"],"C" : ["Ravenclaw", "Hufflepuff"],"D" : ["Slytherin", "Ravenclaw"]}
top_choice = 0
second_choice = 0
no_choice = 0
houses = {"Gryffindor" : 0, "Hufflepuff" : 0, "Ravenclaw" : 0,
"Slytherin" : 0}
def sorting_hat(students):
for student in hogwarts_students:
if houses[student][0] <= len(hogwarts_students) / 4:
我是否在最后一行正确访问了与dict1中列表的第一项对应的整数值?还有另一种方法可以做得更好吗?
答案 0 :(得分:0)
史蒂夫在评论中提到,你的迭代器student
将迭代来自hogwarts_students
的键(&#39; A&#39;,&#39; B&#39;,&# 39; C&#39;,...)。这将导致if
语句出现严重错误,因为它会尝试访问不存在的houses['A']
。
我建议使用.items()
同时迭代hogwarts_students
的键和值,如:
for student, house_options in hogwarts_students.items():
first_option = house_options[0]
if houses[first_option] <= len(hogwarts_students) // 4:
# Do something
pass
此外,您将此设置为带students
参数的函数。如果students
取代hogwarts_students
,请确保您在函数内引用students
字典而不是hogwarts_students
变量。
def sorting_hat(students):
for student, house_options in students.items():
first_option = house_options[0]
if houses[first_option] <= len(students) // 4:
# Do something
pass