2010-05-12 2 views

ответ

7
if key not in dic: 
    dic[key] = None 

Это может быть не так коротким, как код Оливье, но, по крайней мере, он явный и быстрый.

Пожалуйста, не используйте dict в качестве имени переменной, это тени.

10
d.setdefault(key) # sets d[key] to None if key is not in d 
+0

Вам не нужно иметь 'None' там явно, аргумент' default' по умолчанию равен 'None' – SilentGhost

+0

@SilentGhost: Хе-хе, я понял это и изменил свой ответ точно в то же время, когда вы пишете комментарий. :-) –

+0

Это * значительно * быстрее, чем любой другой метод, поскольку он реализует проверку на C и, таким образом, позволяет избежать всего временного подсчета ссылок. –

3
import collections 

mydict = collections.defaultdict(lambda: None) 

Теперь, любой доступ к mydict[akey] будет (если akey не присутствовал в качестве ключа в mydict) установите mydict[akey] в None в качестве побочного эффекта.

Учтите, что инициализатор defaultdict требует использования аргументов без аргументов, откуда lambda.

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