我有一个词典:
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
,但它没有正确执行。
答案 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
这似乎就是你要找的。 p>
答案 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