2012-03-09 1 views
0

У меня есть Dictкак пропустить значение при печати с Словаря, если значение является пустым

x4={'c;1': 'c4;;c6', 'b;1': 'a2;b2;c2;d2', 'b;0': 'A1;B1;C1;D1', 'a;1': 'a1;b1;c1;d1', 'a;0': 'A;B;C;D', 'c;0': 'c1;c2;c3'} 

Я использую этот код:

for k,v in x4.iteritems(): 
    a = k.split(";") 
    b = v.split(";") 
    if a[1] is not '0': 
    val = x4[a[0]+';0'] 
    values = val.split(";") 
    for i in range(len(values)): 
     if values[i]=='' is True: 
      b[i]='' 
     else: 
      print '<%s>%s<%s>' % (values[i],b[i],values[i]) 

выход его печать является

<c1>c4<c1> 
<c2><c2> 
<c3>c6<c3> 
<A1>a2<A1> 
<B1>b2<B1> 
<C1>c2<C1> 
<D1>d2<D1> 
<A>a1<A> 
<B>b1<B> 
<C>c1<C> 
<D>d1<D> 

Но я хочу, чтобы это было

<c1>c4<c1> 
<c3>c6<c3> 
<A1>a2<A1> 
<B1>b2<B1> 
<C1>c2<C1> 
<D1>d2<D1> 
<A>a1<A> 
<B>b1<B> 
<C>c1<C> 
<D>d1<D> 

«c2» не следует печатать. Я использую этот код для печати сгруппированных данных. Просьба помочь мне

+0

Там есть ошибка отступы, если ваш код - что-то должно быть отступом после 'если [1] = '0': ', но не ясно! сколько. Btw, 'если значения [i] == '' is True' могут быть сокращены до' if values ​​[i] == '' 'или даже' if not values ​​[i] '. – aquavitae

+0

условие 'if values ​​[i] == ''' проверяет, что требуемое условие истинно или нет, не нужно писать 'is True' с ним – avasal

ответ

1
x4={'c;1': 'c4;;c6', 'b;1': 'a2;b2;c2;d2', 'b;0': 'A1;B1;C1;D1', 'a;1': 'a1;b1;c1;d1', 'a;0': 'A;B;C;D', 'c;0': 'c1;c2;c3'} 

for k,v in x4.iteritems(): 
    a = k.split(";") 
    b = v.split(";") 
    if a[1] is not '0': 
     val = x4[a[0]+';0'] 
     values = val.split(";") 
     for i in range(len(values)): 
      if values[i] is '': 
       b[i]='' 
      else: 
       if b[i]: 
        print '<%s>%s<%s>' % (values[i],b[i],values[i]) 

выход ::

<A1>a2<A1> 
<B1>b2<B1> 
<C1>c2<C1> 
<D1>d2<D1> 
<c1>c4<c1> 
<c3>c6<c3> 
<A>a1<A> 
<B>b1<B> 
<C>c1<C> 
<D>d1<D> 
+0

Спасибо @ akhter wahab. – user1182090