2017-09-04 18 views
-2

のは、私は辞書の次のリストを持っているとしましょう:Pythonは、リスト内の辞書から値を取得

[ 
     { 
       "id": 1, 
       "name": "string 1" 
     }, 
     { 
       "id": 2, 
       "name": "string 2" 
     }, 
     { 
       "id": 3, 
       "name": "string 3" 
     }, 
     { 
       "id": 4, 
       "name": "string 4" 
     } 
] 

は、その"name""string 1"に基づいて、第1の辞書{"id": 4, "name": "string 4"}"id"を取得することができますする方法はありますか?

+0

確かに等しい名前を持つ内のすべてのIDのリストを返します、ただ反復処理し、あなたは一つの値に一致するものを持っている場合、あなたは他のを持っています。または、リストから辞書を作成し(名前値をid値にマッピングする)、複数の名前に対して効率的に行うことができます。あなたはどこかであなたの試練に立ち往生しましたか? –

答えて

4

これは動作するはずですが、それはあなたのターゲットに等しい名前を持ち、シンプルなリストの内包がトリックを行うことができます

for dictionary in list: 
    if dictionary["name"] == target: 
     print (dictionary["id"]) 
+0

これを試しましたか?あなたはおそらく 'i [" name "]' –

+0

と言っていますが、いいえ、指摘してくれてありがとうございます:) – chngzm

1

そのIDを出力した辞書を見つけるために、辞書のリストを反復処理しました:

a=[ 
     { 
       "id": 1, 
       "name": "string 1" 
     }, 
     { 
       "id": 2, 
       "name": "string 2" 
     }, 
     { 
       "id": 3, 
       "name": "string 3" 
     }, 
     { 
       "id": 4, 
       "name": "string 4" 
     } 
] 
result = [ x for x in a if x["name"] == "string 1" ] 

あなただけの検索文字列に一致するIDのリストが必要な場合には、result = [ x["id"] for x in a if x["name"] == "string 1" ]を使用することができます。

0

問題の行番号は1行です。

output = [ value["id"] for value in a if value["name"] == "string 1" ] 

これは、文字列1

関連する問題