python-3.x - 如何处理 Python 字典中缺少的键
问题描述
我有一个包含键和值的字典列表。不幸的是,某些字典无法使用某些键。例如。1969 年不可用。当我运行代码时,输出卡住了,因为没有“年份”键。如何使程序继续 1970 等等?
我是编程新手,不知道如何进行。
testdict = [{"brand": "ford", "model": "Mustang", "year": 1964},
{"brand": "ford", "model": "Mustang", "year": 1965},
{"brand": "ford", "model": "Mustang", "year": 1966},
{"brand": "ford", "model": "Mustang", "year": 1967},
{"brand": "ford", "model": "Mustang", "year": 1968},
{"brand": "ford", "model": "Mustang"},
{"brand": "ford", "model": "Mustang", "year": 1970},
{"brand": "ford", "model": "Mustang", "year": 1971},
{"brand": "ford", "model": "Mustang", "year": 1972},
{"brand": "ford", "model": "Mustang", "year": 1973},
{"brand": "ford", "model": "Mustang", "year": 1974},]
for x in testdict:
print(x["brand"], x["year"])
我得到这个输出:
福特 1964
福特 1965
福特 1966
福特 1967
福特 1968
() 1 for x in testdict: ----> 2 print(x["brand"], x["year"])
键错误:'年份'
如何跳过字典中不存在的值?
解决方案
get
很有用:
{ "exist": True }["notExist"]
# => KeyError
{ "exist": True }.get("notExist")
# => Null
{ "exist": True }.get("notExist", 17)
# => 17
for x in testdict:
print(x["brand"], x.get("year", "N/A"))
另外,in
:
"notExist" in { "exist": True }
# => False
for x in testdict:
if "year" in x:
print(x["brand"], x["year"])
您还可以使用except
EAFP 原则捕获异常(请求宽恕比请求许可更容易):
for x in testdict:
try:
print(x["brand"], x["year"])
except KeyError:
pass # didn't want to print that anyway
推荐阅读
- c++ - 使用四叉树的不良空间分区
- android - 当屏幕在Android Q中锁定时如何从广播接收器启动活动
- google-cloud-platform - 如何以编程方式在谷歌云运行 api 中获取当前项目 ID
- discord.js - Discord.js - 在我的电脑中选择随机图像
- google-apps-script - 宏操作:如何选择特定列或特定范围?
- php - Wordpress - 按自定义字段计数用户
- python - PyODBC Access only 运行基本的选择查询
- python - 如何将熊猫数据框写入 Databricks dbfs/FileStore?
- java - 如果@transactional 附加到某个方法,实体不会持久化到数据库中
- excel - 将表格数据从电子邮件导出到 excel 列