英文:
Error when creating a set of dictionaries
问题
我已经编写了代码来创建一组字典。我期望输出元素以有意义的格式打印出来,但是我遇到了一个错误。
sets_of_dictionary_ele  = [{"name": "Rolf", "grade": "First"},
                           {"name": "Mark", "grade": "Second"},
                           {"name": "John", "grade": "Third"},
                           {"name": "Halen", "grade": "Fourth"}
                          } 
for dictionary in sets_of_dictionary_ele:
    name = dictionary["name"]
    grade = dictionary["grade"]
    print(f"{name} has scored {grade} grade.")
以上是修复后的代码。
英文:
I have written code to create a set of dictionaries. Where I am expecting the output elements to be printed in a meaningful format, however, I am getting an error.
sets_of_dictionary_ele  = {{"name": "Rolf", "grade": "First"},
                           {"name": "Mark", "grade": "Second"},
                           {"name": "John", "grade": "Third"},
                           {"name": "Halen", "grade": "Fourth"}
                           } 
for k,v in sets_of_dictionary_ele:
    name = k["name"]
    grade = v["grade"]
    print(f"{name} has scored {grade} grade.")
答案1
得分: 2
你出现这个错误的原因是因为你使用花括号包装字典,这会尝试创建一个集合。字典是不可哈希的,因此不能作为集合的成员。你可以使用方括号创建字典列表,并相应地修改你的for循环,如下所示:
sets_of_dictionary_ele  = [{"name": "Rolf", "grade": "First"},
                           {"name": "Mark", "grade": "Second"},
                           {"name": "John", "grade": "Third"},
                           {"name": "Halen", "grade": "Fourth"}
                           ]
for k in sets_of_dictionary_ele:
    name = k["name"]
    grade = k["grade"]
    print(f"{name} has scored {grade} grade.")
或者,你可以将你的 sets_of_dictionary_ele 变量的格式修改为字典,并执行以下操作:
sets_of_dictionary_ele = {'Rolf': 'First',
                          'Mark': 'Second',
                          'John': 'Third',
                          'Halen': 'Fourth'}
for k, v in sets_of_dictionary_ele.items():
    name = k
    grade = v
    print(f"{name} has scored {grade} grade.")
英文:
The reason you get this error is because you are wrapping the dicts with curly brackets, which attempts to make a set. Dictionaries are unhashable, so they can't be members of sets. You can either use square brackets to make a list of dicts, and alter your for loop accordingly, as follows:
sets_of_dictionary_ele  = [{"name": "Rolf", "grade": "First"},
                           {"name": "Mark", "grade": "Second"},
                           {"name": "John", "grade": "Third"},
                           {"name": "Halen", "grade": "Fourth"}
                           ]
for k in sets_of_dictionary_ele:
    name = k["name"]
    grade = k["grade"]
    print(f"{name} has scored {grade} grade.")
Or, you can alter the format of your sets_of_dictionary_ele variable to a dictionary and do the following:
sets_of_dictionary_ele = {'Rolf': 'First',
                          'Mark': 'Second',
                          'John': 'Third',
                          'Halen': 'Fourth'}
for k, v in sets_of_dictionary_ele.items():
    name = k
    grade = v
    print(f"{name} has scored {grade} grade.")
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论