Как я могу заставить словарь в Python иметь только уникальные ключи? - PullRequest
7 голосов
/ 10 мая 2011

возможно ли спроектировать словарь в python таким образом, чтобы он обязательно имел уникальные ключи, и если по ошибке добавлен уже находящийся в словаре ключ, он будет отклонен. спасибо

Ответы [ 4 ]

19 голосов
/ 10 мая 2011

Вы всегда можете создать свой собственный словарь

class UniqueDict(dict):
    def __setitem__(self, key, value):
        if key not in self:
            dict.__setitem__(self, key, value)
        else:
            raise KeyError("Key already exists")
4 голосов
/ 10 мая 2011

Просто проверьте свой дикт, прежде чем добавить элемент

if 'k' not in mydict:
    mydict.update(myitem)
1 голос
/ 05 июня 2014

Это цель setdefault:

>>> x = {}
>>> print x.setdefault.__doc__
D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
>>> x.setdefault('a', 5)
5
>>> x
{'a': 5}
>>> x.setdefault('a', 10)
5
>>> x
{'a': 5}

Это также означает, что вы можете пропустить "if 'key" в dict: ... else: ... "

>>> for val in range(10):
...     x.setdefault('total', 0)
...     x['total']+=val
...
0
0
1
3
6
10
15
21
28
36
>>> x
{'a': 5, 'total': 45}
0 голосов
/ 10 мая 2011

Вы можете создать пользовательский словарь, извлекая из dict и переопределяя __setitem__, чтобы отклонить элементы, уже находящиеся в словаре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...