我有一个包含键和值的字典列表。不幸的是,某些词典无法使用某些键。例如。 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'
如何跳过字典中不存在的值?
答案 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')