Python 为什么打印(users_dict.get(“bob”)和打印(users_dict.get(users[0].username))打印不同的结果?
怎么做Python 为什么打印(users_dict.get(“bob”)和打印(users_dict.get(users[0].username))打印不同的结果?,python,Python,怎么做 print(users_dict.get("bob")) 及 打印不同的值 用户类在这里 class User: def __init__(self, _id, username, password): self.id = _id, self.username = username, self.password = password 如果仔细查看printusers_dict的输出,它是: {'bob',:,'John',:,'
print(users_dict.get("bob"))
及
打印不同的值
用户类在这里
class User:
def __init__(self, _id, username, password):
self.id = _id,
self.username = username,
self.password = password
如果仔细查看printusers_dict的输出,它是: {'bob',:,'John',:,'Dan',:} 您会注意到,键不是“bob”,而是“bob”,。这是因为类定义中的逗号: self.username=用户名 当然,前一行中的逗号也是错误的。在后面有一个逗号
self.username = username,
因此,您将self.username定义为包含一个项username的元组。请注意,逗号构成元组,而不是括号
如果打印用户[1],则可以看到它。用户名:
因此,当get无法找到键“John”时,它将返回其默认值None,这是因为该键与您可以通过打印看到的键不同
printusers_dict与前面提到的其他答案一样,它是一个元组,而不是一个用于进行比较的字符串 首先,如果我们看一下这本词典的关键词:
print(users_dict.keys())
# dict_keys([('bob',), ('John',), ('Dan',)])
每个键都是一个元组。因此,比较一下:
print(users_dict.get( ('bob',) ))
# gives out: <__main__.User ...>
希望这有帮助
('John',) # that's a tuple!
print(users_dict.keys())
# dict_keys([('bob',), ('John',), ('Dan',)])
print(users_dict.get( ('bob',) ))
# gives out: <__main__.User ...>