我正在使用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?
您可以使用列表理解来根据条件过滤列表的项目:
[ (k, v) for k, v in data.items() if "Salary" in v ]
您需要查看"薪金"是否在字典中,例如:
if "Salary" in name[1] and name[1]["Salary"]>500000:
print(name)