Python void / нулевая функция - PullRequest
0 голосов
/ 13 июня 2011

Python Noob, так что я могу поступить об этом неправильно

Я хочу использовать блок try / Кроме того, чтобы найти, не установлено ли значение в dict как

try:
    if entry['VALUE1'] == None: void()
    if entry['VALUE2'] == None: void()
except KeyError:
    print "Values not Found"

Конечно, функция 'void' не существует, могу ли я что-нибудь сделать, чтобы обойти это так, чтобы код работал правильно

Ответы [ 5 ]

8 голосов
/ 13 июня 2011

Попробуйте заменить void() на pass.

Конечно, на практике вы можете просто сделать if key in some_dict:. Но если вам когда-нибудь понадобится «ничего не делать» в блоке, pass - это то, что вы ищете.

3 голосов
/ 13 июня 2011

Попробуйте:

if "VALUE1" in entry:
    foo()

, чтобы определить, входит ли строка "VALUE1" в набор ключей entry dict.

Ваша логика, вероятно, будет выглядеть примерно так:

if "VALUE1" not in entry or "VALUE2" not in entry:
    print "Values not found"

Блок try совершенно не нужен для этого теста.

0 голосов
/ 13 июня 2011

Если вы просто хотите вызвать исключение посредством поиска ключа, if не требуется. Достаточно просто выразить поиск в строке, например:

>>> a = {}
>>> a['value']
Traceback (most recent call last):
  File "<ipython console>", line 1, in <module>
KeyError: 'value'
>>> 
0 голосов
/ 13 июня 2011

Я бы предложил создать функцию, которая поможет вам:

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'
0 голосов
/ 13 июня 2011
if entry.has_key('VALUE1'):
 do_something()

или

if 'VALUE1' in entry:
 do_something()
...