字典中的列表未更新

2024-04-26 19:04:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,我试图存储每个小写字母的计数,以便在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)

但是,输出显示列表没有被修改,因为它们最初是用零填充的,即使在循环之后,它们也没有被修改。你知道吗

我无法理解为什么会发生这种情况,以及如何获得所需的输出。你知道吗


Tags: 字符串代码inimportforstring字母ascii
1条回答
网友
1楼 · 发布于 2024-04-26 19:04:44

使用新列表创建dict:

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)

相关问题 更多 >