python字典这种情况可能是什么原因?
dict里面很奇怪的出现了一个空值,于是遍历一遍看看哪个出了问题:
for k,v in herb2class.items():
if v=='':
print('这个key是',k)
没想到结果是:
这个key是 None
???
None根本做不了key的呀。于是尝试了下herb2class[None],真不行。那这是什么情况?
我知道解决方法可以直接略过这个k,v重新写入一个字典,但是就是想知道这种情况的原因?
回复
1个回答

test
2024-07-03
认真看一下你的 herb2class
,打印出来看看, 肯定有key是None, value是''的元素。另外None是可以作为字典的key的。这个很好验证啊:
In [189]: b = {None: "demo"}
In [190]: b[None]
Out[190]: 'demo'
因为字典的key必须是一个可哈希的对象,诸如: None, int, float, str, tuple(ps:元素也必须是hashable), frozenset(ps:元素也必须是hashable), bytes等,或者你可以理解为任何实现了 __hash__
和 __eq__
方法的对象,都可以作为字典的 key
。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容