Skip to main content
 首页 » 编程设计

python之附加到字典中的列表

2025年05月04日10bjzhanghao

我正在浏览单个单词的列表并创建一个字典,其中单词是键,单词的索引是值。

dictionary = {} 
for x in wordlist: 
    dictionary[x] = wordlist.index(x) 

这目前工作正常,但我希望在第二次或第三次找到同一个词时添加更多索引等等。所以如果短语是“我要去城里”,我会正在寻找创建这样的字典:

{'I': 0, 'am' : 1, 'going' : 2, 'to': (3, 5), 'go' : 4, 'town' : 6} 

所以我想我需要字典中的列表?然后向它们附加更多索引?任何关于如何实现这一目标的建议都很棒!

请您参考如下方法:

你可以这样做:

dictionary = {} 
for i, x in enumerate(wordlist): 
    dictionary.setdefault(x, []).append(i) 

解释:

  • 您不需要调用 index()。使用 enumerate() 更高效、更酷。
  • dict.setdefault() 使用第一个参数作为键。如果未找到,则插入第二个参数,否则忽略它。然后它返回(可能是新插入的)值。
  • list.append() 将项目追加到列表中。

你会得到这样的东西:

{'I': [0], 'am' : [1], 'going' : [2], 'to': [3, 5], 'go' : [4], 'town' : [6]} 

用列表代替元组,即使只有一个元素也可以使用列表。我真的认为这样更好。

更新:

受到 @millimoose 对 OP 的评论(感谢!)的无耻启发,这段代码更好更快,因为它不会构建很多从未插入字典中的 [] :

import collections 
dictionary = collections.defaultdict(list) 
for i, x in enumerate(wordlist): 
    dictionary[x].append(i)