2017-02-16 1 views
0

파이썬 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)