我正在查看单个单词列表并创建一个字典,其中单词是键,单词的索引是值.
dictionary = {}
for x in wordlist:
dictionary[x] = wordlist.index(x)
Run Code Online (Sandbox Code Playgroud)
这个目前工作正常,但我希望在第二次或第三次发现同一个单词时添加更多索引.所以如果短语是"我要去城里",我会期待创建一个这样的字典:
{'I': 0, 'am' : 1, 'going' : 2, 'to': (3, 5), 'go' : 4, 'town' : 6}
Run Code Online (Sandbox Code Playgroud)
所以我想我需要字典里面的列表?然后为它们添加更多索引?关于如何实现这一点的任何建议都会很棒!
你可以这样做:
dictionary = {}
for i, x in enumerate(wordlist):
dictionary.setdefault(x, []).append(i)
Run Code Online (Sandbox Code Playgroud)
说明:
index().它使用起来更高效,更凉爽enumerate().dict.setdefault()使用第一个参数作为键.如果找不到,则插入第二个参数,否则忽略它.然后它返回(可能是新插入的)值.list.append() 将该项目附加到列表中.你会得到这样的东西:
{'I': [0], 'am' : [1], 'going' : [2], 'to': [3, 5], 'go' : [4], 'town' : [6]}
Run Code Online (Sandbox Code Playgroud)
使用列表而不是元组,并使用列表,即使它只是一个元素.我觉得这样比较好.
更新:
受到@millimoose对OP的评论的无耻启发(谢谢!),这段代码更好更快,因为它没有构建很多[]从未插入字典中的代码:
import collections
dictionary = collections.defaultdict(list)
for i, x in enumerate(wordlist):
dictionary[x].append(i)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |