在下面的代码中,我试图存储每个小写字母的计数,以便在cnt[char][i + 1]
给出字母'char'的计数,直到字符串中的第i个字符。
import string
s = 'abcdabcd'
n = len(s)
cnt = dict(zip(string.ascii_lowercase, [[0] * (n + 1)] * 26))
print('Before')
print(cnt)
for i in range(n):
for char in string.ascii_lowercase:
cnt[char][i + 1] = cnt[char][i] + (1 if char == s[i] else 0)
print('After')
print(cnt)
但是,输出显示列表没有被修改,因为它们最初用零填充,即使在循环之后,它们也不会被修改。
我无法理解为什么会发生这种情况以及如何获得所需的输出。
答案 0 :(得分:0)
使用新列表创建您的词典:
import string
s = 'abcdabcd'
n = len(s)
cnt = dict(zip(string.ascii_lowercase, [[0 for _ in range(n + 1)] for __ in range(26)]))
print('Before')
print(cnt)
for i in range(n):
for char in string.ascii_lowercase:
cnt[char][i + 1] = cnt[char][i] + (1 if char == s[i] else 0)
print('After')
print(cnt)