Чтение из Python dict, если ключ может отсутствовать

Вот фрагмент кода, который может помочь:

String input = "ABC_DEF";
StringBuilder sb = new StringBuilder();
for( String oneString : input.split("_") )
{
    sb.append( oneString.substring(0,1) );
    sb.append( oneString.substring(1).toLowerCase() );
}

// sb now holds your desired String
27
задан Brandon Rhodes 5 May 2011 в 13:21
поделиться

4 ответа

Предпочтительный способ, если применимо:

for r in results:
     print r.get('key_name')

просто напечатает None , если key_name не является ключом в словаре. У вас также может быть другое значение по умолчанию, просто передайте его в качестве второго аргумента:

for r in results:
     print r.get('key_name', 'Missing: key_name')

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

for r in results:
    if 'key_name' in r:
        print r['key_name']

, либо

for r in results:
    try: print r['key_name']
    except KeyError: pass

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

76
ответ дан 28 November 2019 в 04:21
поделиться

используйте has_key (), и это вернет истину или ложь

0
ответ дан 28 November 2019 в 04:21
поделиться

[Обновлено для удаления небрежной ошибки]

Вы также можете сделать что-то вроде этого:

for r in (row for row in results if 'a' in row):
    print r['a']

Здесь используется выражение генератора для выбора "строк" из "результатов", где "строка" включает ключ "a".

Вот небольшой тестовый скрипт:

results = [{'a':True}, {'b':True}, {'a':True}]
for r in (row for row in results if 'a' in row): print r['a']
0
ответ дан 28 November 2019 в 04:21
поделиться

Если возможно, используйте библиотеку simplejson для управления данными JSON.

1
ответ дан 28 November 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: