在Python中向后迭代字典

我有一个很长的元素字典,我想删除任何只有一个元素列表的字典条目.

例如

    wordDict={'aardvark':['animal','shell'], 'bat':['animal', 'wings'], 
              'computer':['technology'], 'donut':['food','sweet']}

我想删除’computer’条目,因为它中的列表只有一个元素.我开始迭代wordDict并将字典中的每个条目放在一个单独的列表中,以便它看起来像这样

    wordList=[['animal','shell'],['animal','wings'],['technology'],['food','sweet']]

然后向后遍历该列表,检查列表中每个元素的长度是否大于1.向后,因为向前导致索引在我删除时改变.

所以在wordList中,[‘technology’]被删除了,这就是剩下的东西

    wordList=[['animal','shell'],['animal','wings'],['food','sweet']]

问题是当wordDict变得非常大(100k字)时,将wordDict放入列表然后遍历该列表需要很长时间,我想让它更有效.

我正在考虑向后遍历字典,检查每个条目是否有多个单词,然后删除字典条目(如果没有).最后,需要返回的是列表,而不是字典,因此索引最终无关紧要,我只将它们用于排序目的.

有没有办法做到这一点?

最佳答案 你可以删除你不想要的元素,并创建一个新的字典,使用字典理解,就像这样

>>> {word: items for word, items in wordDict.items() if len(items) > 1}
{'aardvark': ['animal', 'shell'],
 'bat': ['animal', 'wings'],
 'donut': ['food', 'sweet']}

您正在遍历wordDict字典并检查项目的长度是否大于1.如果是,则将其包含在正在构造的新字典中,否则不包括它.

点赞