【问题标题】:defaultdict with multiple parameters具有多个参数的 defaultdict
【发布时间】:2021-08-01 01:57:42
【问题描述】:

我有一个 defaultdict 初始化为:

w2i = defaultdict(lambda: len(w2i))
UNK = w2i["<unk>"]

所以 UNK 的值为 0。 现在我向 w2i 添加更多元素(单词),每个键都映射到该实例的字典长度。

那么如果我们执行:

w2i = defaultdict(lambda: UNK, w2i)

并尝试使用新的或现有的词键访问 w2i,结果会是什么?例如假设“一”是 w2i 中存在的键,而“二”不在 w2i 中。像上面那样重新定义w2i之后,下面的结果会是什么?

onew2i = w2i["one"]
twow2i = w2i["two"]

另外,defaultdict中的2个参数代表什么。大多数使用 lambda 的 defaultdict 教程似乎只有 1 个参数。

谢谢!

【问题讨论】:

标签: python string dictionary collections defaultdict


【解决方案1】:

如果您正在使用:

w2i = defaultdict(lambda: UNK, w2i)

要从测试数据集中添加单词,w2i 中存在的单词将被跳过,w2i 中不存在的单词将被添加值为 0(UNK)。

所以 onew2i 的值不会改变,twow2i 的值为 0。

【讨论】:

  • "w2i 中存在的单词将被跳过" 怎么回事?初始 w2i 中的所有内容都复制到新字典中——没有任何内容被跳过。 “所以 onew2i 的值不会改变,twow2i 的值为 0。”为何如此?两者都没有要更改的初始值,并且两者的值都将设置为 0。
  • 测试数据中可能已经存在于 w2i 中的单词不会对其值进行任何更改,而是直接复制您提到的。不在 w2i 中的单词将被添加值 0。问题中提到的“one”是 w2i 中已经存在的键。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 2011-04-15
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多