Как уменьшить количество кода Python? - PullRequest
0 голосов
/ 04 июля 2018

Как уменьшить количество кода, когда элемент не существует в словаре? В противном случае назначьте его объекту. Доказательство концепции питона:

class MyClass:
    pass

key = "test python"
item = MyClass()
d = {}
if d.get(key) is None:
    d[key] = item
else:
    item = d[key]
print(item)

Можно ли удалить оператор if else?

Ответы [ 4 ]

0 голосов
/ 04 июля 2018

Вы можете прочитать документацию по Python -> setdefault :

class MyClass:
    pass

key = 'test python'
item = MyClass()
d = {}
item = d.setdefault(key, item)

Это более питонно !!!!

0 голосов
/ 04 июля 2018

Вы можете использовать dict.setdefault для этого:

key = "test python"
item = MyClass()
d = {}
print(d.setdefault(key, item))
0 голосов
/ 04 июля 2018

Прочтите Документация , прежде чем начать задавать вопросы ...

Вы хотите использовать это setdefault(key[, default])

0 голосов
/ 04 июля 2018

Может быть, посмотрите, поможет ли использование defaultdict (из коллекций)?

Я не совсем уверен, что вы пытаетесь сделать, но я думаю, что это то же самое поведение?

from collections import defaultdict

class MyClass:
    pass

key = "test python"
item = MyClass()
d = defaultdict()
d[key] = item
print(item)

Не имеет отношения к вышесказанному, я думаю

if not key in d:

или

if not d.get(key):

может быть немного более питоническим?

...