python - 将两个列表制作成字典错误:不可散列类型:'list'
问题描述
嗨,我正在尝试将两个列表作为键和值放入字典中,但出现错误
TypeError Traceback (most recent call last)
<ipython-input-535-a88b451e7100> in <module>()
1 #
2 DN = {key: value for key, value in zip(NiW, NiV)}
----> 3 DY = {key: value for key, value in zip(YiW, YiV)}
4 D = dict(DN, **DY)
TypeError: unhashable type: 'list'
我做了一些研究,似乎是嵌套列表的外部列表导致了这个错误,但我不确定
数据
YiW
[['africa', 'trip'],
['asia', 'travel'],
['europe', 'holiday']]
YiV
[[array([-0.34219775, 0.61445 , 0.19807251],
array([ 1.8527551 , 2.4294894 , 0.3062766],
[array([-0.34219775, 0.61445 , 0.19807251, 0.15776388],
array([ 1.8527551 , 2.4294894 , 0.3062766],
[array([-0.34219775, 0.61445 , 0.19807251, 0.15776388],
array([ 1.8527551 , 2.4294894 , 0.3062766]]
想法输出:
{'africa':array([-0.34219775, 0.61445 , 0.19807251],
'trip':array([-0.34219775, 0.61445 , 0.19807251, 0.15776388]}etc..
我尝试了很多方法来删除外部列表: flatten-list-of-lists
how-to-convert-nested-list-into-dictionary-in-python-where-lst00-is-the-key 但它们在这种情况下不起作用,有人可以帮忙吗?提前谢谢你!
解决方案
您似乎希望位置和类型都独立映射到相同的值。您需要使 dict 理解使用嵌套循环来实现这一点,因为其中的每个值YiW
都是要创建list
的键,而不是单个键。简单的方法:
DY = {key: value for keys, value in zip(YiW, YiV) for key in keys}
请注意,如果任何键出现多次,这将删除数据(因此,如果YiW
包含 both["africa", "trip"]
和 later ["asia", "trip"]
,您将仅映射"trip"
到与 配对的值["asia", "trip"]
)。如果这不是您想要的,您将需要更具体地说明所需的行为。
推荐阅读
- java - 为什么宽度为1的fillRect与drawLine不同
- reactjs - @react-google-maps/api 自动完成将结果严格限制在具有边界的特定区域
- c# - 保存 EF Core 上下文时插入的重复值
- reactjs - 添加后:将 const USER_NAME_SESSION_ATTRIBUTE_NAME='authenticatedUser 导出到 reactjs 中的类
- python-3.x - LU 分解速度与传统 Ax=b
- powershell - ForEach-Object循环中的Powershell“Move-Item:该进程无法访问该文件,因为它正被另一个进程使用”
- excel - Python 3.9,Pandas - 如何在现有的 excel 中附加数据框
- amazon-web-services - 在 AWS Cloudformation 控制台中获取完整的事件文本
- java - 尝试根据用户输入调用方法,然后在 IF 语句内部调用进一步的输入选项
- firebase - Firestore/Android Studio:空对象参考 - 获取云值到类并在主活动中使用它?