Python 向集合字典添加元素
我有一套字典。在某个键<代码>键< /代码>中添加元素时,我考虑两种情况<代码>键在d < /代码>和<代码>键不在d < /代码>: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]) 有没有更干净的方法?我
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()方法并节省开销,我只是想作为“幕后”的一个例子。我不建议他那样做。