1

ユーザーが入力したデータを入力として使用して、TinyDB DB から情報を取得する方法を理解しようとしています。

私のDBは次のようになります。

{"_default": {"1": {"switch": "n9k-c9372px", "names": ["nexus 9372px", "nexus 9372-px", "nexus9372px", "n9372px", "n9k-c9372px"], "fex_comp": ["2224tp", "2232pp"]}, "2": {"switch": "n9k-c9396px", "names": ["nexus 9396px", "nexus 9396-px", "nexus9396px", "n9396px", "n9k-c9396px"], "fex_comp": ["2232tm-e", "2248tp"]}}}

基本的に、DB は次のようなリストを持つ 2 つの辞書の結果です。

{"switch": "switch1", "names": ["name1", "name2", "name3"], "fex_comp":["fex1", "fex2", "fex3"]

私の考えは次のとおりです。

  1. モデルの切り替えを求めるプロンプトを表示するには (q= input("Tell me the model"))。
  2. ユーザーからの入力 (q) を受け取り、それがデータベース内の「名前」のいずれかと一致するかどうかを確認します。
  3. 含まれている場合は、fex_comp リスト、リスト全体を出力します。それ以外の場合は、別のメッセージを出力します。

if、else、ステートメントの作成方法と for ループの使用方法は理解していますが、上記で説明したことを行う方法を理解できていません。

どんな助けでも大歓迎です!

エドヴァルド

4

1 に答える 1

0

そうですか?

   from tinydb import TinyDB, Query

    ql = ['nexus9372px','nexus9396px', 'not_there']

    def mkdb():
        db = TinyDB('db.json')
        db.purge()
        db.insert({'switch': 'n9k-c9372px',
                   'names': ['nexus 9372px',
                             'nexus 9372-px',
                             'nexus9372px', 'n9372px'],
                   'fex_comp': ['2224tp', '2232pp',
                                '2232tm', '2232tm-e']})
        db.insert({"switch": "n9k-c9396px",
                   "names": ["nexus 9396px", "nexus 9396-px",
                             "nexus9396px", "n9396px",
                             "n9k-c9396px"],
                   "fex_comp": ["2232tm-e", "2248tp"]})
        return(db)

    def get_name():
        return(input('Name? '))

    def search(name, db):
        Name = Query()
        res = db.search(Name.names.any(name))
        if res:
            #print(res)
            print('fex_comp for {}: {}'.format(name, res[0]['fex_comp']))
        else:
            print('{} not found'.format(name))

    db = mkdb()
    name = get_name()
    search(name, db)
于 2017-01-21T15:27:58.960 に答える