默认字典避免 KeyError 的键设置
我解析了一些JSON数据,创建了bb_json
,现在想根据这些数据把CSV格式的数据写入csv_writer
。我有以下这段代码:
for product in bb_json['products']:
row = []
row.append(product['sku'])
if product['name']:
row.append(product['name'])
else:
row.append("")
if product['description']:
row.append(product['description'])
else:
row.append("none")
row.append(product['image'] + " ")
if product['manufacturer']:
row.append(product['manufacturer'])
else:
row.append("UNKNOWN")
row.append(product['upc'])
row.append(product['department'])
row.append(product['class'])
row.append(product['subclass'])
csv_writer.writerow(row)
但是在尝试从product
读取数据时,我遇到了KeyError
错误,因为很多值没有被填充。请问我该如何在row
中填入默认值呢?
4 个回答
2
你可以使用这样的写法:product.get("你的字段", "默认值")
9
如果你不能设置一个默认值,并且想要做其他事情(或者只是省略这个条目):
if key in dict:
rank = dict[key]
else:
# do something or just skip the else block entirely
9
不要使用“默认”这个参数名称。比如说,如果我们想把默认值设为1.0,
rank = dict.get(key, 1.0)
想了解更多信息,可以查看这个链接: TypeError: get() takes no keyword arguments
80
你可以用 your_dict.get(key, "default value")
这个方式来获取字典里的值,而不是直接用键去找。