2016-11-15 6 views
-1

私は以下のネストされた辞書を持っています。これは、いくつかのデバイスと、デバイスごとに2つの値で構成されています。私はフラスコのページ内のテーブルにこれらを表示しようとしています。Python辞書の選択値を出力する

[(
    {u'host': u'Spine1', u'type_instance': u'sysName', u'type': u'counter', u'value': 0, u'time': u'2016-11-09T21:44:00Z'}, 
    {u'host': u'Spine1', u'type': u'uptime', u'value': 104473.72, u'time': u'2016-11-09T21:44:00Z'}, 
    {u'host': u'Spine1', u'type': u'gauge', u'value': 249119600.0, u'time': u'2016-11-09T22:39:12Z'}), 
    (
    {u'host': u'leaf1', u'type_instance': u'sysName', u'type': u'counter', u'value': 0, u'time': u'2016-11-09T21:44:00Z'}, 
    {u'host': u'leaf1', u'type': u'uptime', u'value': 104466.68000000001, u'time': u'2016-11-09T21:44:00Z'}, 
    {u'host': u'leaf1', u'type': u'gauge', u'value': 249069928.0, u'time': u'2016-11-09T22:39:12Z'}), 
    (
    {u'host': u'leaf2', u'type_instance': u'sysName', u'type': u'counter', u'value': 0, u'time': u'2016-11-09T21:44:00Z'}, 
    {u'host': u'leaf2', u'type': u'uptime', u'value': 104465.77, u'time': u'2016-11-09T21:44:00Z'}, 
    {u'host': u'leaf2', u'type': u'gauge', u'value': 249119680.0, u'time': u'2016-11-09T22:39:12Z'} 
)] 

私の問題は、私はこれにアプローチする方法については、失われた時の適切なキーと値のペアとイムを選択するためのループのための神社を得ることができないです。

ここには、フラスコページのテーブルが表示されます。

<table> 
<th>Device</th><th>Uptime</th><th>Mem Used</th 
{% for host in HostAll %} 
    <tr> 
    {% for item in host %} 
     {% for key, value in item.iteritems() %} 
     {% if key == 'host' %} 
      <td><a href = "{{ item.host }}"><b>{{ item.host }}</b></a></td> 
     {% elif key == 'value' %} 
      <td> {{ value }}</td> 
     {% endif %} 
     {% endfor %} 
    {% endfor %} 
    </tr> 
{% endfor %} 
</table> 

そして、ここの表は、私は、各デバイスのためのラインのそれぞれから各行ショー「ホスト」、「バリュー」、「価値」を持っていると思い Table

をどのように見えるかです。

私は正しい軌道に乗っているのですか、それとももっと良い方法がありますか?

いつもありがとうございます!

+0

どのような出力が得られますか?それはあなたが欲しいもののようなものですか?そうでない場合は、何が変わっていますか?あなたが本当に求めているのは、あなたのために文字列を動かすことだけです。 – davidism

+0

@davidism最後に投稿したスクリーンショットをご覧ください。ループ内の各列の特定のキー、値のペアを選択するのは難しい作業です。また、各値を適切な形式に変換する必要がありますが、それは後で行います。簡単にすると、辞書を変更するだけで、InfluxDBデータベースへの多数のクエリを構築することができます。 – that1guy15

+0

2つのキーだけを印刷したいのであれば、なぜ辞書全体を反復処理する必要がありますか?その2つのキーを印刷するだけです。 – dirn

答えて

0

私はこれを考え出しました。入れ子は私を投げているもので、私は1つのk、vでマッチングして別のものを表示することに問題がありました。

<table> 
<th>Device</th><th>Uptime</th><th>Mem Used</th><th>CPU Used</th><th>Playbook</th> 
{% for host in HostAll %} 
    <tr> 
    {% for item in host %} 
     {% for key, value in item.iteritems() %} 
     {% if value == 'sysName' %} 
      <td><a href = "{{ item.host }}"><b>{{ item.host }}</b></a></td> 
     {% elif value == 'uptime' %} 
      <td> {{ item.value }}</td> 
     {% elif value == 'gauge' %} 
      <td> {{ item.value|filesizeformat(false) }}</td> 
     {% endif %} 
     {% endfor %} 
    {% endfor %} 
    </tr> 
{% endfor %} 
</table> 
関連する問題