Python noob所以我可能会以错误的方式解决这个问题
我想使用try / except块来查找dict中的值是否未设置为
try:
if entry['VALUE1'] == None: void()
if entry['VALUE2'] == None: void()
except KeyError:
print "Values not Found"
当然'void'函数不存在,我可以做些什么来解决这个问题,以便代码能够正常工作
答案 0 :(得分:8)
尝试将void()
替换为pass
。
当然,在实践中,您可以if key in some_dict:
。但如果您需要在一个区块中“无所事事”,pass
就是您正在寻找的。 p>
答案 1 :(得分:3)
尝试:
if "VALUE1" in entry:
foo()
确定"VALUE1"
字符串是否在entry
字典的键集中。
你的逻辑可能看起来像:
if "VALUE1" not in entry or "VALUE2" not in entry:
print "Values not found"
此测试完全没有try
块。
答案 2 :(得分:0)
if entry.has_key('VALUE1'):
do_something()
或
if 'VALUE1' in entry:
do_something()
答案 3 :(得分:0)
我建议制作一个帮助你的功能:
contains_all_keys = lambda d, keys: reduce(lambda a, b: a and b, map(lambda k: k in d, keys))
di = {'a':'some val', 'b':'some other val'}
if contains_all_keys(di, ['a', 'b']):
print 'a and b present'
if not contains_all_keys(di, ['a', 'b', 'c']):
print 'missing keys'
答案 4 :(得分:0)
如果您只想通过密钥查找来唤起异常,则if
不是必需的。只需在一行上表达查找就足够了,例如:
>>> a = {}
>>> a['value']
Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
KeyError: 'value'
>>>