我有一个defaultdict(Set)
:
from sets import Set
from collections import defaultdict
values = defaultdict(Set)
我希望在构建它时使用 Set 功能来删除重复项。下一步我想将其存储为 json。由于 json 不支持此数据结构,我想将数据结构转换为 defaultdict(list)
但是当我尝试时:
defaultdict(list)(values)
我得到: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]})
defaultdict
构造函数将 default_factory
作为第一个参数,后面可以跟普通 dict
中相同的参数。在这种情况下,第二个参数是一个生成器表达式,它返回包含键和值的元组。
请注意,如果您只需要将其存储为 JSON,普通 dict
就可以了:
>>> {k: list(v) for k, v in values.items()}
{'a': [1]}
关于python - 如何将 defaultdict(Set) 转换为 defaultdict(list)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37212808/