“TypeError:unhashable type:'slice'”是什么意思?我该如何解决?

时间:2015-11-03 19:15:21

标签: python python-3.x hash python-3.4 slice

accounts = {"key":"value","thy":"l23","user2":"psw2"}
a = input("Enter username: ")
b = input("Enter password: ")
if accounts[a:b] == True:
    print("Welcome")
TypeError: unhashable type: 'slice'

错误是什么意思?我该如何解决?

2 个答案:

答案 0 :(得分:3)

如果我了解您尝试做的事情(验证用户名和密码),您需要这样做:

accounts = {"key":"value","thy":"l23","user2":"psw2"}
a = input("Enter username: ")
b = input("Enter password: ")
if accounts[a] and accounts[a] == b:
    print("Welcome")

此测试用于查看输入用户是否存在密码,然后测试输入的密码是否与accounts中存储的密码匹配。

此方法的主要问题是输入的密码会在您输入时打印出来。要解决此问题,请使用getpass.getpass()功能。

答案 1 :(得分:2)

if accounts[a:b] == True:

应该阅读

if accounts.get(a) == b:

我使用accounts.get(a)代替accounts[a]的原因是,如果None不包含有效的用户名(后者会引发异常),前者将返回a