python字典这种情况可能是什么原因?

dict里面很奇怪的出现了一个空值,于是遍历一遍看看哪个出了问题:

for k,v in herb2class.items():

if v=='':

print('这个key是',k)

没想到结果是:

这个key是 None

???

None根本做不了key的呀。于是尝试了下herb2class[None],真不行。
python字典这种情况可能是什么原因?
那这是什么情况?

我知道解决方法可以直接略过这个k,v重新写入一个字典,但是就是想知道这种情况的原因?


回答:

认真看一下你的 herb2class,打印出来看看, 肯定有key是None, value是''的元素。另外None是可以作为字典的key的。这个很好验证啊:

python">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

以上是 python字典这种情况可能是什么原因? 的全部内容, 来源链接: utcz.com/p/938896.html

回到顶部