【发布时间】:2016-07-04 16:24:32
【问题描述】:
我有以下函数,它读取 dict 并将一些值影响到局部变量,然后作为元组返回。
问题是字典中可能不存在某些所需的键。
到目前为止,我有这段代码,它可以满足我的需求,但我想知道是否有更优雅的方式来实现它。
def getNetwork(self, search):
data = self.get('ip',search)
handle = data['handle']
name = data['name']
try:
country = data['country']
except KeyError:
country = ''
try:
type = data['type']
except KeyError:
type = ''
try:
start_addr = data['startAddress']
except KeyError:
start_addr = ''
try:
end_addr = data['endAddress']
except KeyError:
end_addr = ''
try:
parent_handle = data['parentHandle']
except KeyError:
parent_handle = ''
return (handle, name, country, type, start_addr, end_addr, parent_handle)
我对众多的try: except: 有点害怕,但是如果我将所有的矫揉造作放在一个 try: except: 中,一旦第一个丢失的 dict 键引发错误,它就会停止影响值。
【问题讨论】:
-
谢谢你们俩的回答!我稍后会测试。我真的很喜欢 get() 解决方案,因为这正是我的问题……正如文档所代表的那样:>如果键在字典中,则返回键的值,否则为默认值。如果未给出默认值,则默认为 None,因此此方法永远不会引发 KeyError。
标签: python json python-3.x rdap