【发布时间】:2020-02-25 20:28:05
【问题描述】:
情景模拟
我正在尝试计算一个单词在句子中出现的次数,以获得句子列表。
每个句子都是一个单词列表。
我希望最终字典对整个语料库中的每个单词都有一个键,第二个键指示它们出现的句子,值是它出现在其中的次数。
当前解决方案
以下代码正常工作:
dfm = dict()
for i,sentence in enumerate(setences):
for word in sentence:
if word not in df.keys():
dfm[word] = dict()
if i not in dfm[word].keys():
dfm[word][i] = 1
else:
dfm[word][i] += 1
问题
有没有更简洁的方法可以用 python 做到这一点?
我已经浏览过this 和this 他们建议使用的地方:
dic.setdefault(key,[]).append(value)
和,
d = defaultdict(lambda: defaultdict(dict))
我认为它们是很好的解决方案,但我不知道如何使其适应我的特定解决方案。
谢谢!
【问题讨论】:
-
使用
Counter? -
@temmo Collections Counter 通常是一个不错的选择,但看看 OP 想要的结构,我认为 defaultdict 更有意义。
-
额外评论:在准备好您的问题并在 SO 上发布之前寻找可能的解决方案方面做得很好。你值得一颗星!
标签: python dictionary nested