TypeError:不可用类型:' dict'。列表中的字典

时间:2015-11-11 23:36:00

标签: python list python-3.x dictionary data-structures

我正在制作一个小程序,用另一个字典中的值制作字典。但是我已经用这个语法遇到了麻烦。 这是代码:

first_dict = {}
new_list_of_dict = [{"name": "Johno"},
                    {"name": "Johno"},
                    {"name": "Johno"},
                    {"name": "Johno"},
                    {"name": "Johno"},
                    {"name": "Johno"},
                    {"name": "Johno"},
                    {"name": "Johno"},
                    {"name": "Johno"},
                    {"name": "Johno"},
                    {"name": "Johno"},
                    {"name": "Johno"},
                    {"name": "Johno"}]
for i in new_list_of_dict:
    print(i["name"])
    first_dict[i] = i["name"]
    print(first_dict)

我想提供first_dict密钥name,然后将值设置为Johno。我还需要解决方案可扩展为多个键,其值为不同的数据类型,如列表和整数。

2 个答案:

答案 0 :(得分:2)

在您的代码中,您将dict i作为dict first_dict的关键字。因此,unhashable错误。试试这个:

for i in new_list_of_dict:
    for key, value in i.items():
        first_dict[key] = value

答案 1 :(得分:1)

假设new_list_of_dict中的每个元素都有一个键值对:

dict([d.items()[0] for d in new_list_of_dict])

说明:items()返回字典键值对的列表,其中列表中的每个元素都是元组(key, value)。由于我们假设这个列表只包含一个元素,我们采用第一个元素,并使用列表推导来创建这样的元组列表,即:

[('name', 'Johno'),
('name', 'Johno'),
      ...

('name', 'Johno')]

最后我们将其转换为字典。

要选择特定指数,首先选择您想要的指数:

inds = [1,3]

然后选择新列表并转换:

dict([d.items()[0] for d in [new_list_of_dict[i] for i in inds]])