如何强制python中的字典只有唯一键?

时间:2011-05-10 09:26:00

标签: python dictionary

是否有可能以一种必须具有唯一键的方式在python中设计字典,如果错误地添加了已经在字典中的键,则会被拒绝。 感谢

4 个答案:

答案 0 :(得分:19)

您随时可以创建自己的词典

class UniqueDict(dict):
    def __setitem__(self, key, value):
        if key not in self:
            dict.__setitem__(self, key, value)
        else:
            raise KeyError("Key already exists")

答案 1 :(得分:4)

在添加项目之前检查你的词典

if 'k' not in mydict:
    mydict.update(myitem)

答案 2 :(得分:1)

这是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}

这也意味着您可以跳过"如果'键'在dict中:......其他:......"

>>> 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}

答案 3 :(得分:0)

您可以通过从dict派生并覆盖__setitem__来拒绝字典中已有的项目来创建自定义词典。