首页 > 解决方案 > 捕获 `KeyError` 并替换为 MSG

问题描述

我正在查询一个JSON没有可用键的字典。

我的目标是输入发生在然后写入文件中N/A的密钥。KeyError

goal = ['name', 'age', 'gender']


for item in r['data']:
    final = [item[x] for x in goal]
    writer.writerow(final)

我知道可以通过Try/Except但我不知道如何正确处理它

try:
    final = [item[x] for x in goal]
except KeyError as e:
    # from here am struggling

例子:

g = [
    {'name': 'ahmed', 'age': '10', 'gender': 'M'},
    {'name': 'mohamed', 'age': '20'},
    {'name': 'ramy'}
]

期望的输出:

['ahmed', '10', 'M']
['moahmed','20','N/A']
['ramy','N/A','N/A']

标签: pythonjsondictionary

解决方案


尝试dict.get使用列表理解的另一种方式:

g = [
    {'name': 'ahmed', 'age': '10', 'gender': 'M'},
    {'name': 'mohamed', 'age': '20'},
    {'name': 'ramy'}
]

goal = ['name', 'age', 'gender']

print([[d.get(k, "N/A") for k in goal] for d in g]) # when python couldn't find the key, return "N/A"
# [['ahmed', '10', 'M'], ['mohamed', '20', 'N/A'], ['ramy', 'N/A', 'N/A']]


推荐阅读