2017-02-16 11 views
0

私はPython 3.5を使って辞書を繰り返し処理しています。私は、以下のデータセットの特定の条件をチェックし、条件が真実でない場合、または条件を評価するデータがない場合にメッセージを返そうとしています。Python:辞書から条件情報を抽出する

data = { 
      "Barry": { 
       "Title": "CTO", 
       "YOB": 1980, 
       "Direct_Reports": ["Hannah"], 
       "Awards": ["Tech Innovator", "Best CTO"], 
       "Salary": 1200000 
      }, 
      "Joe": { 
       "Title": "Data Scientist", 
       "YOB": 1981, 
       "Salary": 200000 
      }, 
      "Bill": { 
       "Title": "Senior Software Engineer", 
       "YOB": 1993, 
       "Direct_Reports": [], 
       "Awards": ["Employee of the Month"] 
      }, 
      "Jose": { 
       "Job": "Full Stack Engineer", 
       "YOB": 1996, 
       "Direct_Reports": ["John", "Hannah"] 
      }, 
     } 

例えば、私が記載されている人の名前を印刷するには、辞書を反復処理することができます。

for name in data.keys(): 
    print (name) 

または

for name in data.items(): 
     print (name[1]['YOB']) 

が生まれたすべての人の年を取得します。私は

for name in data.items(): 
    print (name[1]["Salary"]) 

を実行する場合、データが同じように誰もが賞を受賞した、すべての人の給与をキャプチャしていないので

しかし、それは、私にエラーを与えます。 これをやって、特定のしきい値を超える人(例えば、500000人)の給与だけを抽出するには、どうすればいいですか?

答えて

1
あなたは条件に基づいてリストの項目を除外するために、リストの内包表記を使用することができます

[ (k, v) for k, v in data.items() if "Salary" in v ]あなたが「給与」は同様に、辞書にあるかどうかを確認する必要が

1

if "Salary" in name[1] and name[1]["Salary"]>500000: 
    print(name) 
関連する問題