python - 如何将 defaultdict(Set) 转换为 defaultdict(list)?

标签 python defaultdict

我有一个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/

相关文章:

python - 混淆使用带赋值和不带赋值的 defaultdicts

python - 使用 python 将分隔字符串列表转换为树/嵌套字典

python - 从非空 defaultdict 中选取一个随机元素

python - 名称错误 : global name 'windll' is not defined

python - 基于差异的过滤数据框有两个系列,一个通过字典映射

python - 向列添加前导零

xlwings的python,我不明白其中一条规则

python - 从 defaultdict 获取原始 key 集

python - 使用嵌套 defaultdict 重新分配 pandas 系列值

python collections.defaultdict 列表长度为 2