0

簡単な質問ですが、構文の答えはまだ見つかりません。特定のキーと値の組み合わせを持つサブディクショナリを選択するにはどうすればよいですか? 効果的に、どのように私はselect * where id='ABC'

詳細:

私は Python を使用しており、ネストされた辞書を作成しました。サブディクショナリのキー値の 1 つが何とかなるサブディクショナリから情報を取得する必要があります。

ディクショナリを初期化して、その要素を読み取ることができましたが、キーと値のペアによって各サブディクショナリを呼び出す方法がわかりません。たとえば、

#json_data is a json object

data={}
for i in range(10):
   data[i]={'id':json_data[i]['id'],
      'stationName':json_data[i]['stationName'], 
      'numBikes':json_data[i]['numBikes']}

これにより、ネストされた辞書が開始されます。としてデータにアクセスできdata[0]、サブディクショナリが正しく印刷されます。ただし、行を追加/削除できるため、これらのインデックスは何の意味もないため、キーと値でアクセスする必要があります。

しかし、ID が "ABC" の場合、駅名と自転車の数を取得するにはどうすればよいでしょうか?

4

3 に答える 3

0

標準の Python 構文を使用して、辞書からデータを抽出できます。IT は余分なコードを作成する可能性がありますが、それは可能です。

しかし、もっと派手なものが必要な場合や、ネストされた辞書が多すぎて反復やループが面倒な場合は、ネストされた辞書を照会するための一種のインターフェースを提供するdpath-pythonを試すことができます。xpathSQL の種類の構文については、よくわかりません。

ドキュメントから -

/slashed/paths ala xpath 経由で辞書にアクセスして検索するための Python ライブラリ

基本的に、ファイルシステムであるかのように、辞書をグロブできます。辞書要素にアクセスするためのグロブ (高度な fnmatch.fnmatch マジックによる bash eglob 構文) を指定し、それらの結果をフィルタリングする機能を提供します。

于 2013-06-21T04:29:16.380 に答える
0

あなたが言うように、インデックスは何の意味もないので、ID値をキーとして使用してみませんか?

data={}
for i in range(10):
    data[json_data[i]['id']] = {
        'stationName': json_data[i]['stationName']
        'numBikes': json_data[i]['numBikes']
    }

または、Python を使用しているため、次のようになります。

data = {}
for id, value in json_data.items():
    data[id] = {
        'stationName': value['stationName']
        'numBikes': value['numBikes']
    }
于 2013-06-21T04:31:15.627 に答える
0

あなたの例では、辞書の配列があります。それ以上の深さはありますか?そうでない場合は、次のように簡単にできます。

[data[i] for i in data if data[i]['id']=='ABC']
于 2013-06-21T04:35:33.950 に答える