首页 > 解决方案 > 如何处理 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"])

键错误:'年份'

如何跳过字典中不存在的值?

标签: python-3.xdictionary

解决方案


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"])

您还可以使用exceptEAFP 原则捕获异常(请求宽恕比请求许可更容易):

for x in testdict:
    try:
        print(x["brand"], x["year"])
    except KeyError:
        pass # didn't want to print that anyway

推荐阅读