我怎样才能跳过dict中的空白值

时间:2012-03-13 09:20:50

标签: python dictionary

我有一个词典:

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 个答案:

答案 0 :(得分:4)

在你的第一个代码中,你指的是一个名为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

这似乎就是你要找的。

答案 1 :(得分:0)

不确定这是否是您想要的:

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