附加到嵌套在Dictionary中的列表

use*_*225 0 python dictionary nested list nested-lists

我试图附加到嵌套在字典中的列表,以便我可以看到哪些字母跟随一个字母.我想在底部获得理想的结果.为什么这不匹配?

word = 'google'
word_map = {}

word_length = len(word)
last_letter = word_length - 1

for index, letter in enumerate(word):
    if index < last_letter:
        if letter not in word_map.keys():
            word_map[letter] = list(word[index+1])
        if letter in word_map.keys():
            word_map[letter].append(word[index+1])
    if index == last_letter:
        word_map[letter] = None

print word_map

desired_result = {'g':['o', 'l'], 'o':['o', 'g'], 'l':['e'],'e':None}
print desired_result
Run Code Online (Sandbox Code Playgroud)

mgi*_*son 5

使用标准库有利于您:

from itertools import izip_longest
from collections import defaultdict

s = 'google'

d = defaultdict(list)
for l1,l2 in izip_longest(s,s[1:],fillvalue=None):
    d[l1].append(l2)

print d
Run Code Online (Sandbox Code Playgroud)

这里的第一个技巧是成对产生字母(None最后一个).这正是我们所做的izip_longest(s,s[1:],fillvalue=None).从那里,将第二个字母附加到对应于第一个字符的字典列表是一件简单的事情.defaultdict允许我们避免各种测试来检查密钥是否在dict中.