如何忽略多个单独行的KeyErrors?

时间:2015-08-23 12:02:32

标签: python python-2.7 exception ignore

我正在查找字典中的一些数据。但有时候某些信息并不存在,而且会抛出public class Application extends SugarApp { public Database obtainDatabase(){ return getDatabase(); } } 。有没有办法可以忽略任何错误而忽略每行KeyError / try

我想要类似的东西:

except

而不是:

ignore KeyError:
    a = data['foo']
    b = data['bar']
    c = data['fizz']
    d = data['buzz']

5 个答案:

答案 0 :(得分:3)

您可以使用<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>failsafe-maven-plugin</artifactId> <version>2.4.3-alpha-1</version> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> ,如果密钥不存在,则返回.get()。示例 -

None

在此之后,如果a = data.get('foo') b = data.get('bar') c = data.get('fizz') d = data.get('buzz') 之类keys不存在,'foo'将返回dict.get()。您还可以指定作为第二个参数的默认值,以便在密钥不存在时返回。示例 -

None

如果密钥不存在,这将返回a = data.get('foo','<default value>') #the default value does not have to be a string, it can be anything.

答案 1 :(得分:1)

也许您可以使用for循环和键列表。

keys = ['foo', 'bar','fizz', 'buzz']
values = []

for k in keys:
     v = data.get(k)
     values.append(v)

答案 2 :(得分:0)

也许你可以使用.has_key:

a = None    
if data.has_key('foo'):
    a = data['foo']
print a    


把结果data.keys() 进入一个set()并检查第一个

答案 3 :(得分:0)

只能使用exec(如果您使用get()方法变量将None):

code = """a = data["foo"]
b = data["bar"]
c = data["fizz"]
d = data["buzz"]"""
for line in code.splitlines():
    try:
        exec(line, globals())
    except Exception:
        pass

答案 4 :(得分:-1)

在try块上使用所有而不是单个块,因为除了块之外总是相同。 e.g。

try:
  a = data['foo']
  b = data['bar']
  c = data['fizz']
  d = data['buzz']
except:
  pass

`