2017-11-03 24 views
1

私はこのリストから特定の辞書を削除する方法を知りたいと思います。ユーザーのステータスが「オフライン」で、オーダータイプが「購入」と等しいpython - 辞書のキーが特定の値と等しい場合、リストから辞書を削除する

mylist = [key_values for key_values in mylist if key_values['user']['status'] != 'offline'] 

(*)は、あなたの変数に名前を付けないでください:あなたは望ましくない要素を除いたリストを再作成することができます

mylist = [ 
      { 
      "user": {"status": "offline"}, 
      "order_type": "buy" 
      }, 
      { 
      "user": {"status": "online"}, 
      "order_type": "sell" 
      } 
     ] 

答えて

1

ループと反復が原因リストポインタの例外を生成しながら、リストを修正する)ための予約されたキーワードを使用します。

+0

は例外、KeyError例外生成: 'ステータス' と "リスト" 変数名は –

+0

おっと単なる一例だった、ネストされたdictsがあります。それを固定した。言い訳をしても、キーワードを隠さないでください。 –

+0

ええ、これは今働く、私は2つのループのために救済されたlol –

1
seq = [ 
     { 
      "user": {"status": "offline"}, 
      "order_type": "buy" 
     }, 
     { "user": {"status": "online"}, 
      "order_type": "sell" 
     } 
     ] 

for _ in seq: 
    print _ 
    if _['user']['status'] == 'offline': 
     seq.remove(_) 

print seq 

場所の削除を希望する場合。

出力: [{'user': {'status': 'online'}, 'order_type': 'sell'}]

+0

それは大きなリストとポインタのために反復中に変更することはできませんので動作しません –

関連する問題