默认字典键以避免 KeyError [重复]

问题描述 投票:0回答:4

我解析了一些 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)    

但是我尝试从

KeyError
读取数据时得到了
product
,因为其中许多值都未填充。如何在
row
中填写默认值?

python json csv dictionary keyerror
4个回答
78
投票

您可以使用

your_dict.get(key, "default value")
而不是直接引用某个键。


9
投票

不要使用“默认”参数名称。例如,如果我们想要 1.0 作为默认值,

rank = dict.get(key, 1.0)

欲了解更多详情: 类型错误:get() 不接受关键字参数


9
投票

如果您无法定义默认值并想要执行其他操作(或只是省略该条目):

if key in dict:
    rank = dict[key]
else:
    # do something or just skip the else block entirely

2
投票

您可以使用如下语法:

product.get("your field", "default value")

© www.soinside.com 2019 - 2024. All rights reserved.