2015-11-12 5 views
1

У меня есть список JSon в виде словаря, а следующее позволяет мне получить значения из Dict:Как бороться с пустым значением Dict

valone = out['red']['blue']['green'] 

valtwo = out['purple']['yellow']['black'] 

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

Сейчас это работает очень хорошо, когда эти ключи заселены, но когда они не я

KeyError: 'black' 

Это я могу видеть, как это значение пусто.

Мне сложно определить, как отфильтровать до объявления значений dict.

Я видел, как люди предполагают

out.get("black", None) 

Но я не могу получить доступ к черным, как я его третье значение после того, как я?

+2

Какова полная ценность 'out' (т.е. выход' print (repr (out)) ').? – metatoaster

+0

'out ['purple'] ['yellow']. Get ('black', None)'? – falsetru

ответ

5

Как вы используете индексацию многоуровневой, чистейший способом является использование исключений для управления потоком (что вполне принято в Python, хотя часто хмурился на других языках)

try: 
    valone = out['red']['blue']['green'] 
except KeyError: 
    # Handle Your Exception Here 
+0

кроме KeyError: Perfect - огромное спасибо! Будет ли accpet отвечать, когда достигнет период времени. – devnull

0

Вы можете использовать Try/за исключением синтаксиса:

try: 
    valone = out['red']['blue']['green'] 
except: 
    # whatever 
+0

Общепринятое заявление не является лучшей практикой. Здесь вы знаете, что, по крайней мере, вы столкнетесь с «KeyError», поэтому его следует поймать. – Makoto

Смежные вопросы