Python 向集合字典添加元素

Python 向集合字典添加元素,python,Python,我有一套字典。在某个键键< /代码>中添加元素时,我考虑两种情况键在d < /代码>和键不在d < /代码>: from random import randint for i in range(1000): key = randint(0, 100) if key in d: d[key] |= set([randint(0, 10)]) else: d[key] = set([randint(0, 10]) 有没有更干净的方法?我

我有一套字典。在某个键<代码>键< /代码>中添加元素时,我考虑两种情况<代码>键在d < /代码>和<代码>键不在d < /代码>:

from random import randint

for i in range(1000):
    key = randint(0, 100)

    if key in d:
        d[key] |= set([randint(0, 10)])
    else:
        d[key] = set([randint(0, 10])
有没有更干净的方法?我可以统一这两种情况吗?

我喜欢使用,这是一种字典,当您引用尚未定义的键时,它会创建一个默认对象:

>>> from random import randint
>>> from collections import defaultdict
>>> 
>>> d = defaultdict(set)
>>> 
>>> for i in range(10):
...     el = randint(0, 5)
...     d[el].add(randint(0,10))
... 
>>> d
defaultdict(<type 'set'>, {0: set([2]), 1: set([7]), 2: set([8, 9, 5, 7]), 
3: set([1]), 4: set([1, 3, 4])})
>>> d[0]
set([2])
>>> d[2]
set([8, 9, 5, 7])
来自随机导入randint的
>>
>>>从集合导入defaultdict
>>> 
>>>d=默认DICT(设置)
>>> 
>>>对于范围(10)内的i:
...     el=randint(0,5)
...     d[el].add(randint(0,10))
... 
>>>d
defaultdict(,{0:set([2]),1:set([7]),2:set([8,9,5,7]),
3:set([1]),4:set([1,3,4]))
>>>d[0]
集合([2])
>>>d[2]
集合([8,9,5,7])
试试
[defaultdict](http://docs.python.org/library/collections.html#collections.defaultdict)
s:
从集合导入defaultdict

defaultdict
接受一个“
defaultfactory
”参数。基本上,它允许您为尚未“初始化”的键设置默认值

因此,在您的示例中,您不必执行
if el in d
检查,如果
d
defaultdict
。虽然该检查仍将返回
False
,但如果
el
不在
d
中,则执行
d[el]|=set([randint(0,10)]
基本上会导致以下结果:

from random import randint

for i in range(1000):
    key = randint(0, 100)

    if key in d:
        d[key] |= set([randint(0, 10)])
    else:
        d[key] = set([randint(0, 10])
d[el] = set([])
d[el] |= set([randint(0, 10)])

希望这有帮助

很好!这正是我想要的。建议的第一部分很好,但他甚至不需要创建另一组并以这种方式添加。您只需调用add()方法并节省开销,我只是想作为“幕后”的一个例子。我不建议他那样做。