Python:从字典中提取条件信息

时间:2017-02-16 04:22:27

标签: python python-3.x dictionary

我使用Python 3.5迭代字典。我正在尝试检查下面数据集中的某些条件,并在条件不真实或者没有数据来评估条件时返回消息。

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?

2 个答案:

答案 0 :(得分:1)

您可以使用列表推导根据条件筛选出列表的项目:

[ (k, v) for k, v in data.items() if "Salary" in v ]

答案 1 :(得分:1)

您需要查看“Salary”是否在字典中,例如:

if "Salary" in name[1] and name[1]["Salary"]>500000:
   print(name)