Python3は、ネストされた辞書とリストの値で検索し、他の最も近いキーと値のペアを取得します

ピースフル

私はこのような辞書を持っています:

{'targets': [{'hosts': ['google.fr'],
              'tags': {'country': 'fr',
                       'server': 'french'}},
             {'hosts': ['amazon.es'],
              'tags': {'country': 'es',
                       'server': 'spain'}},
             {'hosts': ['facebook.de'],
              'tags': {'country': 'de',
                       'server': 'germany'}},
             {'hosts': ['server1.fr', 'server2.fr', 'server3.fr'],
              'tags': {'country': 'fr',
                       'server': 'french'}}]}

基本的に、任意の深さのネストされたリスト、辞書、および文字列を含む辞書。

これをトラバースして、最も近いキー「タグ」を抽出するための最良の方法は何ですか?「ホスト」は私の検索に等しいですか?

私の試み:

#host = 'google.fr' or 'amazon.es' or 'facebook.de' or 'server1.fr' or 'server2.fr' or 'server3.fr'

for [idx, val] in enumerate(targets['targets']):
    h = targets['targets'][idx]['hosts']
    for i in h:
        if i == host and 'tags' in targets['targets'][idx]: # if equal to host and 'tags' key exist
            t = targets['targets'][idx]['tags']

            tags = ','.join("{!s}={!r}".format(key,val) for (key,val) in t.items())
            tags = tags.replace("'", "")

            pprint ("host: '{}'".format(host))
            pprint("tags: '{}'".format(tags))

結果:

"host: 'google.fr'"
"tags: 'country=fr,server=french'"
"host: 'amazon.es'"
"tags: 'country=es,server=spain'"
"host: 'facebook.de'"
"host: 'server1.fr'"
"tags: 'country=fr,server=french'"
"host: 'server2.fr'"
"tags: 'country=fr,server=french'"
"host: 'server3.fr'"
"tags: 'country=fr,server=french'"

私はPythonの専門家ではないので、パフォーマンスを向上させることができると確信しています。

基準:

        wwii        azro

real    0m0,087s    0m0,057s
user    0m0,071s    0m0,027s
sys     0m0,015s    0m0,028s

real    0m0,078s    0m0,067s
user    0m0,068s    0m0,056s
sys     0m0,009s    0m0,010s

real    0m0,074s    0m0,058s
user    0m0,062s    0m0,024s
sys     0m0,011s    0m0,034s

azroのパフォーマンスが向上しているようです:)

アズロ

インデックス付きの反復を削除して、同等ではなくホストの包含を探すことができます

host = "google.fr"
for target in targets['targets']:
    if host in target['hosts'] and 'tags' in target:
        tags = ','.join("{!s}={!r}".format(key, val) for (key, val) in target['tags'].items())
        tags = tags.replace("'", "")
        print("host: '{}'".format(host))
        print("tags: '{}'".format(tags))

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ネストされた辞書とリストでキーと値のペアの出現パスを検索します

分類Dev

python-ネストされた辞書を再帰的に検索し、検索されたキーと値のペアに関数を適用します

分類Dev

ネストされた辞書は、最も高いまたは最も頻度の高い値を持つキーを検索します

分類Dev

ネストされたPython辞書とリストでキーの最初の出現を検索します

分類Dev

ネストされた辞書の値が最も高い2つのキーを取得します

分類Dev

ネストされた辞書とリストでキーのすべての出現を検索します

分類Dev

linqを使用して辞書からネストされたキーと値のペアを取得する方法

分類Dev

辞書で最小のエントリを検索し、代わりに最後のキーと値のペアを取得します

分類Dev

Pythonはキーのリストでネストされた辞書の値を変更します

分類Dev

ネストされた辞書をキーと値のペアのリストにフラット化します

分類Dev

キーと値のペアを追加して、ネストされた辞書を拡張しようとしています

分類Dev

ネストされた辞書キーを作成し、名前空間のキーと値のペアのリストから値を割り当てるにはどうすればよいですか?

分類Dev

リストを含むネストされた辞書のキーと値を変更します

分類Dev

特定のキーと値のペアがあるリストで辞書を取得します

分類Dev

Pythonのリストのリストで最も近い値を検索します

分類Dev

ネストされた辞書で最大値を検索するときのKeyError

分類Dev

Pythonで最も深いネストされたdictの値を取得します

分類Dev

リスト内のAnsible辞書-辞書のキーと値を取得します

分類Dev

キーと値のペアが辞書の別のリストにあるリストで辞書を取得します

分類Dev

Pythonでネストされた辞書のキーと値を比較する

分類Dev

特定のキーで最も高い値を持つ辞書のリストから辞書を返します

分類Dev

ネストされた辞書とリストの辞書で親キーとインデックスの「パス」を取得します

分類Dev

キーと値のペアのネストされたオブジェクト数を取得します

分類Dev

Pythonを使用してネストされた辞書に複数のキーと値を追加するにはどうすればよいですか?

分類Dev

パンダ-辞書のネストされたキー値とネストされたリストからデータフレームを作成します

分類Dev

キーのリストを指定してネストされた辞書から値を取得するにはどうすればよいですか?

分類Dev

Rでの辞書/リストの操作:キーと値のペアから値を取得する方法は?

分類Dev

Pythonのネストされた辞書から条件に基づいて特定のネストされたキー/値を取得します

分類Dev

リストにラップされた、ネストされた辞書で一致する値である辞書キーを検索します

Related 関連記事

  1. 1

    ネストされた辞書とリストでキーと値のペアの出現パスを検索します

  2. 2

    python-ネストされた辞書を再帰的に検索し、検索されたキーと値のペアに関数を適用します

  3. 3

    ネストされた辞書は、最も高いまたは最も頻度の高い値を持つキーを検索します

  4. 4

    ネストされたPython辞書とリストでキーの最初の出現を検索します

  5. 5

    ネストされた辞書の値が最も高い2つのキーを取得します

  6. 6

    ネストされた辞書とリストでキーのすべての出現を検索します

  7. 7

    linqを使用して辞書からネストされたキーと値のペアを取得する方法

  8. 8

    辞書で最小のエントリを検索し、代わりに最後のキーと値のペアを取得します

  9. 9

    Pythonはキーのリストでネストされた辞書の値を変更します

  10. 10

    ネストされた辞書をキーと値のペアのリストにフラット化します

  11. 11

    キーと値のペアを追加して、ネストされた辞書を拡張しようとしています

  12. 12

    ネストされた辞書キーを作成し、名前空間のキーと値のペアのリストから値を割り当てるにはどうすればよいですか?

  13. 13

    リストを含むネストされた辞書のキーと値を変更します

  14. 14

    特定のキーと値のペアがあるリストで辞書を取得します

  15. 15

    Pythonのリストのリストで最も近い値を検索します

  16. 16

    ネストされた辞書で最大値を検索するときのKeyError

  17. 17

    Pythonで最も深いネストされたdictの値を取得します

  18. 18

    リスト内のAnsible辞書-辞書のキーと値を取得します

  19. 19

    キーと値のペアが辞書の別のリストにあるリストで辞書を取得します

  20. 20

    Pythonでネストされた辞書のキーと値を比較する

  21. 21

    特定のキーで最も高い値を持つ辞書のリストから辞書を返します

  22. 22

    ネストされた辞書とリストの辞書で親キーとインデックスの「パス」を取得します

  23. 23

    キーと値のペアのネストされたオブジェクト数を取得します

  24. 24

    Pythonを使用してネストされた辞書に複数のキーと値を追加するにはどうすればよいですか?

  25. 25

    パンダ-辞書のネストされたキー値とネストされたリストからデータフレームを作成します

  26. 26

    キーのリストを指定してネストされた辞書から値を取得するにはどうすればよいですか?

  27. 27

    Rでの辞書/リストの操作:キーと値のペアから値を取得する方法は?

  28. 28

    Pythonのネストされた辞書から条件に基づいて特定のネストされたキー/値を取得します

  29. 29

    リストにラップされた、ネストされた辞書で一致する値である辞書キーを検索します

ホットタグ

アーカイブ