如何在python中更新字典中包含的整数列表

如何在python中更新字典中包含的整数列表,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我正在尝试创建一个“刽子手”机器人,它将贯穿整个英语语言,并逐字计算相同长度的每个单词。其思想是,bot将在y索引处返回x长度的最常用字符。到目前为止,我已经成功地将所有单词导入到一个列表中,并将该列表过滤为只有x长度的单词。我似乎遇到的问题是更新y索引 为了完成这项任务,我创建了一个字典,它将列表作为键值存储在此字典中。单词长度的所有索引都已初始化为0。我的想法是,我将遍历所有单词的整个长度,并计算特定索引中某个字符的出现次数。所以我的字典实际上看起来像: D = {'a': [0, 0, …

我正在尝试创建一个“刽子手”机器人,它将贯穿整个英语语言,并逐字计算相同长度的每个单词。其思想是,bot将在y索引处返回x长度的最常用字符。到目前为止,我已经成功地将所有单词导入到一个列表中,并将该列表过滤为只有x长度的单词。我似乎遇到的问题是更新y索引

为了完成这项任务,我创建了一个字典,它将列表作为键值存储在此字典中。单词长度的所有索引都已初始化为0。我的想法是,我将遍历所有单词的整个长度,并计算特定索引中某个字符的出现次数。所以我的字典实际上看起来像:

D = {'a': [0, 0, …, 0], 'b':[0, 0, …, 0], …, 'z': [0, 0, …, 0]}
我想做的是更新每个键和每个键的索引,这样我就可以在特定的索引中找到所有相同长度的字母的总出现次数。最终结果如下所示:

D = {'a': [4137, 568, …, 897], …., 'z':[523, 129, … , 321]}
我当前的解决方案是尝试将索引映射到键,并增加每个索引,但我收到以下错误消息:

TypeError:列表索引必须是整数或片,而不是str

我知道这是一个口惠,但我非常感谢任何援助。谢谢你的时间和耐心

def occurence_of_characters(L, word):
    length_word = len(word)

    letters = string.ascii_letters
    numbers = string.digits
    characters = letters + numbers + "-" + "."
    characterlist = list(characters)

    D = {i:[0 for j in range(length_word)] for i in characterlist}
    #0 for j in range(length_word)
    for word in L:
        for key in D:
            #l = D.get(key)
            if key in word:
                for index in key:
                    D[key][int(index)] = list(map(map(lambda index: index+1, D[key][index]), D[key] ))
    print(D)

你可以这样做:

def occurence_of_characters(word_list):
    length_word = len(word_list[0])
    characters = string.ascii_letters + string.digits + '.-'
    counts = {c:[0]*length_word for c in characters}
    for word in word_list:
        for i, c in enumerate(word):
            if c in counts:
                counts[c][i] += 1
    return counts


my_list = ['mark', 'cats', 'dogs', 'zips', 'rats']
D = occurence_of_characters(my_list)
for c in 'atsz':
    print(f'{c}: {D[c]}')
输出:

a: [0, 3, 0, 0]
t: [0, 0, 2, 0]
s: [0, 0, 0, 4]
z: [1, 0, 0, 0]

您试图实现的目标有点不清楚,请提供一个输入和输出示例(当然,对于有限的单词集)。变量
L
do是什么?另外,请缩短解释并提供更多信息(如@lorg said),我想列出一个英语单词列表,如:马克、猫、狗、拉链、老鼠。我想计算每个索引中每个字符的出现次数。基于上面的单词,我的返回语句看起来像:D={'a':[0,3,0,0],…,'s':[0,0,0,4],…,'z':[1,0,0,0]}L是一个长度相同的单词列表。我正在从另一个函数导入它。这很好。在枚举(单词)中的i,c行中发生了什么。枚举(单词)的意义是什么?此外,我们为什么要使用“枚举(word)”中的I,c。这实际上是做什么的?我能够使计数[c][I]+=1工作。它确实产生了上述结果。我只是想了解背后的逻辑。谢谢
enumerate(iterable)
获取一个iterable(本例中为字符串)并返回另一个iterable,其中每个项都是由索引和原始iterable中的项组成的元组。因此,
enumerate(“star”)
say将返回一个iterable,其中包含
(0,“s”)
(1,“t”)
(2,“a”)
(3,“r”)
<对于i,enumerate(word)中的c将迭代这些项,并将每个元组的第一个元素分配给
i
,第二个元素分配给
c