【问题标题】:What does calling defaultdict(set) do? [duplicate]调用 defaultdict(set) 有什么作用? [复制]
【发布时间】:2021-06-15 15:43:41
【问题描述】:

我看到有人使用defaultdict(set) 来解决从集合中导入的问题,但这是顺便说一句,所以我没有完全看问题。我知道如果您执行defaultdict(int),那么字典中尚未包含的每个实例都会默认为 0。这很有用,因为您在添加到字典时不必使用 if/else 语句。但是,通过参数传递set 有什么作用?它可以服务于什么可能的目的,是否仅意味着仅将值添加到字典中(如果字典尚不存在)?

【问题讨论】:

  • 鉴于您知道defaultdict(int) 做了什么,这只是一小步;每个不在字典中的实例(实际上是当您尝试访问缺少的 key 时)默认为set()(一个空集)而不是int()0,因为你'已经看过了)。
  • 您查看过defaultdict 的文档吗?您传递的任何内容都用作默认值的工厂函数。所以int() == 0set() 返回一个空集...

标签: python collections


【解决方案1】:

来自docs的示例

>>> s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)] 
>>> d = defaultdict(set) 
>>> for k, v in s:
...     d[k].add(v)
...
>>> sorted(d.items()) 
[('blue', {2, 4}), ('red', {1, 3})]

所以如果kd中不存在,它会为这个k添加一个空集

d[k] = set()

并添加

d[k].add(v)

【讨论】:

    猜你喜欢
    • 2013-08-04
    • 2016-07-16
    • 1970-01-01
    • 2013-07-24
    • 2015-05-03
    • 1970-01-01
    • 2013-07-08
    • 2010-10-27
    • 2019-05-06
    相关资源
    最近更新 更多