как я могу пропустить пустые значения в dict - PullRequest
0 голосов
/ 13 марта 2012

У меня есть диктат:

x = {'a': {'p': 'in-gaap', 'r': 'inr', 'dec': 0},
     'b': {'p': 'in-ca', 'r': 'inr', 'dec': 0},
     'c': {'p': 'in-gaap', 'r': '', 'dec': ''},
     'd': {'p': 'in-gaap', 'r': 'inr', 'dec': 0}}

Я использую этот код для пропуска пустых значений:

for k,v in x.iteritems():
    if d[k]['r'] == '' and d[k]['dec'] == '':
        print k, x[k]['p']
    else:                
        print x[k]['p'], x[k]['r'], x[k]['dec']

Но вывод:

a,in-gaap
b,in-ca
c-in-gaap
d-in-gaap

условие не выполняется должным образом, оно печатает все значения

И я тоже пытался использовать этот код

for k,v in x.iteritems():
    obj = re.match('\w+', x[k]['p'])
    obj1 = re.match('\w+', x[k]['q'])
    if not obj1 and obj2:
        print k, x[k]['p']
    else:                
        print x[k]['p'], x[k]['r'], x[k]['dec']

Но вывод такой же, как и выше.

На самом деле пустые значения dict содержат "\n", '' и т. Д. И некоторые не-ascii символы, поэтому я попытался использовать re, но он не выполняется должным образом.

Ответы [ 2 ]

4 голосов
/ 13 марта 2012

В вашем первом коде вы имеете в виду диктовку с именем d, о которой мы понятия не имеем. Если я переименую твой дикт в d вместо x, я получу такой вывод:

>>> ## working on region in file /usr/tmp/python-30572oWE...
in-gaap inr 0
c in-gaap
in-ca inr 0
in-gaap inr 0

Что, кажется, то, что вы ищете.

0 голосов
/ 13 марта 2012

Не уверен, что это то, что вы хотите:

for k,v in x.iteritems():
    if not v['r'] and not v['dec']:
        print k,v['p']
    else:
        print v['p'],v['r'],v['dec']

Выходы:

in-gaap inr 0
c in-gaap
in-ca inr 0
in-gaap inr 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...