我使用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?
答案 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)