Вложенный в Python словарь заменить на none и добавить без использования get - PullRequest
1 голос
/ 24 сентября 2019
if 'value1' in results_dict:
    if results_dict['value1'] is not None:
        if results_dict['value1']['limit'] is None:
            res.append(results_dict['value1']['limit'] == "Nan")
        else:
            res.append(results_dict['value1']['limit'])
    else:
        res.append(results_dict['value1']['limit'] == "Nan")
else:
    res.append("Nan")

Я пытаюсь решить проблему, из-за которой я не могу добавлять значения в res (res.append (results_dict ['value1'] ['limit'] == "Nan"))

I am getting TypeError: 'NoneType' object is not subscriptable
I am trying to check if there is a None value and replacing it with NaN. I also want to keep the key 
names. I also used .get twice but that gave me an Attribute Error.

1 Ответ

0 голосов
/ 24 сентября 2019

Условная идиома Pythonic для вашего кода немного устарела, вы не хотите использовать 'is None', ( список вещей, которые Python возвращает как None ), а также, для тестирования вами Nanнужно импортировать математику.Я считаю, что это то, что вы ищете:

import math

if 'value1' in results_dict:
    if results_dict['value1']:  #is not None just means it exists, so eliminate that
        if not results_dict['value1']['limit']: #is None just means not
            temp = {'limit':math.nan} #create new dict
            results_dict['value1'].update(temp) #update your level 1 nested dict
            res.append(math.isnan(results_dict['value1']['limit'])) #correct nan test
        else:
            res.append(results_dict['value1']['limit'])
    else:
        res.append(math.isnan(results_dict['value1']['limit'])) #correct test for nan
else:
    res.append(math.nan) #correct assignment of nan

См. Также: Назначение переменной NAN в Python

Редактировать: если вы не хотите задавать NANв частности, тогда ваш код может быть значительно упрощен.

if 'value1' in results_dict:
    if results_dict['value1']:
        if results_dict['value1']['limit']:
            res.append(results_dict['value1']['limit'])
    else:
        res.append('')
else:
    res.append('') #correct assignment of nan

На самом деле не совсем понятно, в чем тут вопрос ... Каким должен быть ваш список?Истинные ценности?Значения Dict?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...