Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是什么;无”;Python中的do in.get()?_Python - Fatal编程技术网

这是什么;无”;Python中的do in.get()?

这是什么;无”;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

我试图通过艰苦的学习来学习Python。我现在在练习39,有一个简单的问题。我试图在网上搜索,但找不到任何答案。以下是练习中的代码:

# 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。