我有一组与键相关的数字。当键不在字典中时,我想将它连同它的值一起添加到 set() 并且它存在,我只想为该键的现有集合添加一个数字。我的做法是这样的:
for num in datasource:
if not key in dict.keys():
dict[key] = set().add(num)
else:
dict[key].add(num)
但问题在于,当我添加数字 03 时,它会将 0,3,03 添加到集合中,而我真正想要添加的只是 03。
如有任何帮助,我们将不胜感激。
请您参考如下方法:
试试这个,添加新的集合元素作为给定键的值:
d = {}
d.setdefault(key, set()).add(value)
或者,使用defaultdict:
from collections import defaultdict
d = defaultdict(set)
d[key].add(value)
任一解决方案都将有效地创建一个 multimap :一个数据结构,对于一个给定的键可以保存多个值——在本例中,在一个 set 中。特别是对于您的示例,这就是您使用它的方式:
d = {}
for num in datasource:
d.setdefault(key, set()).add(num)
或者:
from collections import defaultdict
d = defaultdict(set)
for num in datasource:
d[key].add(num)
