我有一个很长的元素字典,我想删除任何只有一个元素列表的字典条目.
例如
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.如果是,则将其包含在正在构造的新字典中,否则不包括它.