Python:如何使用每个列表上的索引0从列表字典中访问字典中的字符串键?

Python:如何使用每个列表上的索引0从列表字典中访问字典中的字符串键?,python,dictionary,Python,Dictionary,我试着迭代,比如说,dict1,它有两个项列表的键,字符串。还有一本词典(dict2)有四个词条。这些条目的键是dict1中列表中唯一可能的四个字符串。当我遍历dict1时,我希望程序选择列表中的第一项,然后在dict2中找到该键,这样我就可以根据遍历的内容访问它们的整数值。字符串是相同的,所以如果访问正确,它应该工作吗?这是我的密码: hogwarts_students = { "A" : ["Gryffindor", "Slytherin"],"B" : ["Hufflepuff", "Ra

我试着迭代,比如说,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:
霍格沃茨大学学生={“A”:[“格兰芬多”、“斯莱特林”],“B”:[“赫夫勒普夫”、“拉文克劳”],“C”:[“拉文克劳”、“赫夫勒普夫”],“D”:[“斯莱特林”、“拉文克劳”]] top_选项=0 第二选择=0 无选择=0 豪斯={“格兰芬多”:0,“赫奇帕夫”:0,“拉文克劳”:0, “斯莱特林”:0} def分拣帽(学生): 对于霍格沃茨大学的学生:
如果像Steve在评论中提到的那样拥有[student][0],那么您的迭代器
student
将迭代来自
hogwarts_students
('A','B','C',…)的键。这将在您的
if
语句中导致一个关键错误,因为它将尝试访问不存在的
房屋['a']

我建议使用
.items()
同时迭代
霍格沃茨大学学生的键和值,如下所示:

for student, house_options in hogwarts_students.items():
    first_option = house_options[0]
    if houses[first_option] <= len(hogwarts_students) // 4:
        # Do something
        pass

它有用吗?那就好了。你会遇到一个问题,你的钥匙(for循环中的学生)可能不在你的字典里。添加一些东西来检查它。除此之外,如果有效,我看不出你发布的代码有任何问题。你的循环迭代器将把学生设置为霍格沃茨大学学生词典中的键值。因此,它将有值“A”、“B”等。测试中会出现键值错误,因为houses字典没有键值“A”、“B”等。
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