如何处理Python字典中的遗失键

时间:2018-12-26 06:41:16

标签: python-3.x dictionary

我有一个包含键和值的字典列表。不幸的是,某些词典无法使用某些键。例如。 1969年不可用。当我运行代码时,输​​出卡住了,因为没有“ year”键。 如何使该程序继续到1970等?

我是编程新手,不知道如何进行编程。

resultsTextView.setText(String.valueOf(woo));

我得到以下输出:

福特1964年

1965年福特

ford 1966

ford 1967

ford 1968

KeyError跟踪(最近一次通话最近)  在()中       x在testdict中为1: ---->打印2张(x [“ brand”],x [“ year”])

KeyError:'year'

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

3 个答案:

答案 0 :(得分:1)

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

您还可以遵循EAFP原则(更容易要求宽恕而不是许可)使用except捕获异常:

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

答案 1 :(得分:0)

我认为您可以使用try和除外:

for x in testdict:
    try:
        print(x["brand"], x["year"])
    except(KeyError):
        continue

答案 2 :(得分:0)

我们可用的选择之一是将代码放入try-except块中。对于您的情况,应该像

for data in testlist:
    try:
        print(data['brand'],data['year'])
    except KeyError as err:
        # Do something to handle the error

或者,如果只希望在字典中找不到键时返回特定值,则可以将dict类的get成员方法用作

dictionary.get('Ask for a key',default='Return this in case key not found')