我有一个很长的元素字典,我想删除所有只有一个列表且只有 1 个元素的字典条目。 例如
wordDict={'aardvark':['animal','shell'], 'bat':['animal', 'wings'],
'computer':['technology'], 'donut':['food','sweet']}
我想删除“计算机”条目,因为其中的列表只有一个元素。我首先遍历 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
字典并检查 items
的长度是否大于 1。如果是,则将其包含在正在构建的新字典中, 否则不包括它。
关于python - 在 Python 中向后迭代字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26200463/