jon*_*alv 4 python defaultdict
我有一个defaultdict(Set):
from sets import Set
from collections import defaultdict
values = defaultdict(Set)
Run Code Online (Sandbox Code Playgroud)
我希望在构建时使用“设置”功能来删除重复项。下一步我想将其存储为 json。由于 json 不支持此数据结构,我想将数据结构转换为 adefaultdict(list)但当我尝试时:
defaultdict(list)(values)
Run Code Online (Sandbox Code Playgroud)
我得到:TypeError: 'collections.defaultdict' object is not callable,我应该如何进行转换?
您可以使用以下内容:
>>> values = defaultdict(Set)
>>> values['a'].add(1)
>>> defaultdict(list, ((k, list(v)) for k, v in values.items()))
defaultdict(<type 'list'>, {'a': [1]})
Run Code Online (Sandbox Code Playgroud)
defaultdict构造函数default_factory作为第一个参数,后面可以跟与正常中相同的参数dict。在本例中,第二个参数是一个生成器表达式,它返回由键和值组成的元组。
请注意,如果您只需要将其存储为 JSON 普通文件dict就可以了:
>>> {k: list(v) for k, v in values.items()}
{'a': [1]}
Run Code Online (Sandbox Code Playgroud)