В Python наиболее эффективный способ сделать это:
my_var = some_var['my_key'] | None
т. присвойте some_var['my_key']
my_var
, если some_var
содержит 'my_key'
, иначе make my_var
be None
.
В Python наиболее эффективный способ сделать это:
my_var = some_var['my_key'] | None
т. присвойте some_var['my_key']
my_var
, если some_var
содержит 'my_key'
, иначе make my_var
be None
.
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)
Вы ищете get()
метод dict
.
my_var = some_var.get('some_key')
Метод get()
возвращает значение, связанное с 'some_key'
, если такое значение существует. Если ключ отсутствует, возвращается None
.
Предполагая, что some_var
является словарем, вам нужно dict.get()
:
my_var = some_var.get('my_key')
Этот результат по умолчанию равен None
, если my_key
отсутствует, но вы можете указать другое значение по умолчанию:
my_var = some_var.get('my_key', default)
Самое замечательное в методе .get()
- вы можете фактически определить возвращаемое значение, если ключ не существует.
my_dict = { 1: 'one', 2: 'two' }
print my_dict.get(3, 'Undefined key')
будет печататься.
Undefined key
Это очень полезно не только для целей отладки, но и при анализе json (по моему опыту, по крайней мере), и вам следует как можно больше использовать get()
over []
.
try:
my_var = some_var
except:
my_var = None
Но, честно говоря, это, вероятно, не доходит до сути того, что вы пытаетесь сделать... Нам нужно больше контекста, чтобы более полно ответить.
В python "|" переводится на "или", поэтому:
my_var = some_var или None
Изменить: Вы отредактировали свой начальный пост. Правильный способ сделать то, что вы хотите:
my_var = some_var.get('my_key', None)