所以我基本上是尝试使用setdefault方法将字典放入字典中。在
text = 'banana'
k = 2
st = {}
circ_text = text + text[:k]
for i in range(len(circ_text) - k):
kgram = circ_text[i:i + k]
next_char = circ_text[i + k]
st[kgram].setdefault(next_char, 0)
st[kgram][next_char] += 1
print(st)
我正试着得到这样的东西
^{pr2}$不知为什么我得到了一个键错误:“ba”。所以我应该在做这件事之前把“ba”放在st dict里?或者有没有办法用这种方式加上“ba”键
您需要在两个级别支持
dict
条目的动态生成。对于这个特定的例子,可能最简单的方法是至少在一个级别中使用defaultdict
(并且由于您在计算事物,所以对于内部的dict
,使用Counter
)。在这简化了您的代码(不显式地处理丢失的键),尽管这意味着您的输出将不仅仅使用
^{pr2}${}
包装。如果您希望它在结尾看起来像嵌套的dict
s(和/或需要停止自动激活键,如defaultdict
和Counter
do),您可以添加:在
print
之前,它将转换回dict
的dict
的普通dict
您从不向
st
添加新密钥,因此它是空的。在您试图访问}不存在。在
st['ba']
并使用其setdefault
方法,就好像st['ba']
是一个字典,但是{也许您想改为使用
st.setdefault
,并为st['ba']
设置默认值:或者:
^{pr2}$相关问题 更多 >
编程相关推荐