2017-07-18 12 views
0

初心者はここにあります。以下のようなjasonブロックから特定の値/キーを選択する方法を理解するためのPythonコードを私に提供してください。例えばPythonを使用して特定の文字列と値のペアに基づいてjsonブロックをフィルタリングする

"listeners": [ 
     { 
      "ip_address": "::", 
      "node": "[email protected]", 
      "port": 5672, 
      "protocol": "amqp", 
      "socket_opts": { 
       "backlog": 128, 
       "exit_on_close": false, 
       "linger": [ 
        true, 
        0 
       ], 
       "nodelay": true 
      } 
     }, 
     { 
      "ip_address": "::", 
      "node": "[email protected]", 
      "port": 25672, 
      "protocol": "clustering", 
      "socket_opts": [] 
     }, 
     { 
      "ip_address": "::", 
      "node": "[email protected]", 
      "port": 15672, 
      "protocol": "http", 
      "socket_opts": { 
       "port": 15672 
      } 
     } 
    ], 

私は唯一の「IPアドレス」とPythonのジェイソン・モジュールを使用してそれに対応する値をフィルタリングするためには、何を取るのでしょうか?以下のようなものを得る。

"listeners": [ 
     { 
      "ip_address": "::", 
         } 
     }, 
     { 
      "ip_address": "::", 
     }, 
        } 
     } 
    ], 

アドバイスをお願いします。前もって感謝します。

+0

同じキー "id" 'が2つあるため、以下のようなものはありません... – n00dl3

+0

@ n00dl3ありがとうございます。私が最初に言ったように、私はjsonと仕事をしています。私はjasonブロックを変更し、今見てみることができます。 jasonブロックの書式設定が間違っている場合は、それを修正してください。私は自分の目的のためにPythonコードを書く方法を理解する必要があります。 – bindo

+0

[Python Dictionary](http://www.tutorialspoint.com/python/python_dictionary.htm)について読む – stovfl

答えて

0

私が理解できるように、あなたがdictsのリストを持っている:

>>> listeners = [{"a": 1, "b": 2}, {"a": 3, "b": 1}] 

これは、あなたがdictsをフィルタリングするために、リスト上のマップ機能を使用できることを意味します:

>>> map(lambda d: d["a"], listeners) 
[1, 3] 

これは今plainですリスト。また、ラムダ関数内でdictを作成(再作成)することもできます。

>>> map(lambda d: {"a": d["a"]}, listeners) 
[{'a': 1}, {'a': 3}] 

これは必要なのですか?

関連する問題