Keyerror при использовании defaultdict - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь использовать defaultdict (dict) для анализа данных из json, который имеет вложенные ключи 'date' и 'value'.

Ключ даты всегда отображается с соответствующим значением, но если нет никаких данных о ключе 'value' вообще, они полностью опущены.

Это вызывает у меня проблему с defaultdict, потому что когда в первой строке отсутствует ключ 'value', но он присутствует на во втором ряду выдается KeyError: 'value'.

Любые идеи, как я мог бы обойти это и иметь значение там, даже считали его отсутствующим в первом ряду.

DATA:

{
"metric": "complexity",
   "history": [
       {
        "date": "2019-09-10T15:24:33+0200",
        "value": "54"
       },
       {
        "date": "2019-12-24T11:26:42+0100"
       }

КОД:

dates_to_values = defaultdict(dict)
    for metric in metrics['measures']:
        metric_value = metric['metric']
        for hist in metric['history']:
            dates_to_values[hist['date']][metric_value] = hist['value']

1 Ответ

1 голос
/ 20 марта 2020

Проблема не в defaultdict, а в hist. Если hist всегда является диктатом, используйте hist.get('value'), когда ключ не всегда присутствует в нем.

...