created:11-10-2022
views:15
0

昨天碰到的一个问题,百思不得其解,后面发现是一个很低级的错误

提问于: 11-10-2022
user image 磕学家
添加评论
评论需要先登录哦o( ̄ε ̄*)
1 回答
0

导致该错误的原因就我碰到的来说有两种

  • 把列表(List)当作字典的键
  • 多余的逗号

把列表(List)当作字典的键

>>> my_dict = {'name': 'John', [1,2,3]:'values'}
>>> print(my_dict)
Traceback (most recent call last):
  File "C:\Users\xxx\anaconda3\envs\test\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
TypeError: unhashable type: 'list'

解决办法: 把list该为元组:

{'name': 'John', tuple([1,2,3]):'values'}

多余的逗号

多余的逗号会让python人为我们在写一个列表或者是元组,下面就是一个例子,注意手所指的多余的逗号:

def fake_function(ion,groups):
    e_x = e_of_anions[ion]
    z_x = get_charge_number(ion)
    cations = groups['cations'], # 👈
    anions = groups['anions'], # 👈
    neutrals = groups['neutrals'], # 👈

这时,如果在pycharm里把鼠标悬停在等号左边的变量上,则会有:

cations: tuple[Any] = groups['cations'],

这样的提示,说明python把这些变量识别成元组了!

解决办法: 把多余的逗号删除即可

编辑于: 11-11-2022
回答于:11-10-2022
添加评论
评论需要先登录哦o( ̄ε ̄*)
添加回答