我正在查找字典中的一些数据。但有时候某些信息并不存在,而且会抛出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']
答案 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
`