默认字典避免 KeyError 的键设置

33 投票
4 回答
38518 浏览
提问于 2025-04-18 13:46

我解析了一些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") 这个方式来获取字典里的值,而不是直接用键去找。

撰写回答