这是什么;无”;Python中的do in.get()?
我试图通过艰苦的学习来学习Python。我现在在练习39,有一个简单的问题。我试图在网上搜索,但找不到任何答案。以下是练习中的代码:这是什么;无”;Python中的do in.get()?,python,Python,我试图通过艰苦的学习来学习Python。我现在在练习39,有一个简单的问题。我试图在网上搜索,但找不到任何答案。以下是练习中的代码: # create a mapping of state to abbreviation states = { 'Oregon': 'OR', 'Florida': 'FL', 'California': 'CA', 'New York': 'NY', 'Michigan': 'MI' } # create a basic
# create a mapping of state to abbreviation
states = {
'Oregon': 'OR',
'Florida': 'FL',
'California': 'CA',
'New York': 'NY',
'Michigan': 'MI'
}
# create a basic set of states and some cities in them
cities = {
'CA': 'San Francisco',
'MI': 'Detroit',
'FL': 'Jacksonville'
}
print '-' * 10
# safely get a abbreviation by state that might not be there
state = states.get('Texas', None)
if not state:
print "Sorry, no Texas."
# get a city with a default value
city = cities.get('TX', 'Does Not Exist')
print "The city for the state 'TX' is: %s" % city
我不太明白
None
在state=states.get('Texas',None)
中做了什么。如果它被用来告诉Python“没有了”,那么为什么我不能直接编写state=states.get('Texas')
?我需要什么额外的None
?谢谢 这里的None
是一个默认值,用于告诉python如果键不存在该返回什么。在这种情况下,这有点多余,因为第二个参数的默认值为get()
发件人:
获取(键[,默认])
如果键在字典中,则返回键的值,否则为默认值。
如果未给出default,则默认为None,因此
方法从不引发键错误
因此它直接等价于states.get('Texas'),相当于:
try:
state = states['Texas']
except KeyError:
state = None
因此,在这种情况下,您只需检查状态
的计算结果是否不为真
,这是毫无意义的,最好只需执行try/except并对异常执行所需的操作(除非出于某种原因,您要返回的其他值也要过滤掉,例如空字符串,这似乎不太可能)
Python文档很详细但很清楚,因此在您不知道参数是什么的情况下,请检查文档。您不需要编写
None
,这是在字典中找不到键时的默认返回值。在这种情况下,这是多余的
例如,您可以替换它以返回类似
notfound
的其他内容。顺便说一句,使用states.get('Texas')
而不仅仅是states['Texas']
的全部原因是,您不必编写明确处理“no-Texas”的代码案例。当你要编写代码时,你应该使用括号:试试:\n state=states.get['Texas']\nexcept key错误:\n打印“对不起,没有德克萨斯州。”
我知道这是其他人的代码,你正试图理解,但是……他们让你更难理解,因为他们不是pythonic。