我正在制作一个小程序,用另一个字典中的值制作字典。但是我已经用这个语法遇到了麻烦。 这是代码:
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
。我还需要解决方案可扩展为多个键,其值为不同的数据类型,如列表和整数。
答案 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]])