Подтвердить что ты не робот

Доступ к клавише dict и возврату Нет, если не существует

В Python наиболее эффективный способ сделать это:

my_var = some_var['my_key'] | None

т. присвойте some_var['my_key'] my_var, если some_var содержит 'my_key', иначе make my_var be None.

4b9b3361

Ответ 1

Python будет бросать KeyError, если ключ не существует в словаре, поэтому вы не можете писать свой код так же, как ваш JavaScript. Однако, если вы работаете конкретно с dicts, как в вашем примере, есть очень приятная функция mydict.get('key', default), которая пытается получить ключ из словаря и возвращает значение по умолчанию, если ключ не существует.

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

В зависимости от того, что содержит ваш dict и как часто вы ожидаете доступа к незащищенным ключам, вы также можете быть заинтересованы в использовании defaultdict от пакет collections. Это занимает factory и использует его для возврата новых значений из магического метода __missing__ всякий раз, когда вы обращаетесь к ключу, который иначе не был явно установлен. Это особенно полезно, если ваш dict должен содержать только один тип.

from collections import defaultdict

foo = defaultdict(list)
bar = foo["unset"]
# bar is now a new empty list

N.B. docs (for 2.7.13) утверждают, что если вы не передадите аргумент defaultdict, он вернет None для отмены ключей. Когда я попробовал (на 2,7.10, это именно то, что я случайно установил), это не сработало, и я получил KeyError. YMMV. Кроме того, вы можете просто использовать лямбда: defaultdict(lambda: None)

Ответ 2

Вы ищете get() метод dict.

my_var = some_var.get('some_key')

Метод get() возвращает значение, связанное с 'some_key', если такое значение существует. Если ключ отсутствует, возвращается None.

Ответ 3

Предполагая, что some_var является словарем, вам нужно dict.get():

my_var = some_var.get('my_key')

Этот результат по умолчанию равен None, если my_key отсутствует, но вы можете указать другое значение по умолчанию:

my_var = some_var.get('my_key', default)

Ответ 4

Самое замечательное в методе .get() - вы можете фактически определить возвращаемое значение, если ключ не существует.

my_dict = { 1: 'one', 2: 'two' }
print my_dict.get(3, 'Undefined key')

будет печататься.

Undefined key

Это очень полезно не только для целей отладки, но и при анализе json (по моему опыту, по крайней мере), и вам следует как можно больше использовать get() over [].

Ответ 5

try:
    my_var = some_var
except:
    my_var = None

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

Ответ 6

В python "|" переводится на "или", поэтому:

my_var = some_var или None

Изменить: Вы отредактировали свой начальный пост. Правильный способ сделать то, что вы хотите:

my_var = some_var.get('my_key', None)