2012-03-13 9 views
0

に空白値をスキップすることができ、私は辞書を持っている:どのように私は、辞書

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

9質疑ではありませんか? [編集ヘルプ](http://stackoverflow.com/editing-help) – stema

+0

それは今どのように見えるかを参照してください!ありがとう@ Rik Poggi – stema

+3

あなたの予想される出力は何ですか? – wim

答えて

4

最初のコードでは、dという名前のディクテーションを参照していますが、それはわかりません。

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

あなたが探しているもののようだ:私はd代わりのxにあなたの辞書の名前を変更した場合、私はこの出力を取得します。

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 
+0

注意してください。v ['dec']は2つの異なるタイプの偽の値(int 0と空の文字列) – wim

関連する問題