【问题标题】:Error when creating a set of dictionaries [closed]创建一组字典时出错[关闭]
【发布时间】:2020-01-03 12:15:11
【问题描述】:

我编写了代码来创建一组字典。我希望输出元素以有意义的格式打印,但是,我收到了一个错误。

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.")

【问题讨论】:

  • 知道你遇到了什么错误会有所帮助 - 猜测是因为你不能像字典一样在集合中存储可变对象?
  • 这能回答你的问题吗? TypeError: unhashable type: 'dict'

标签: python dictionary set


【解决方案1】:

您收到此错误的原因是因为您使用大括号将字典包裹起来,这会尝试创建一个集合。字典是不可散列的,所以它们不能是集合的成员。您可以使用方括号来制作字典列表,并相应地更改您的 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.")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 2015-01-23
    • 2013-09-04
    • 2020-08-11
    • 2011-09-19
    相关资源
    最近更新 更多