python - 在 Python 中向后迭代字典

标签 python python-3.x dictionary

我有一个很长的元素字典,我想删除所有只有一个列表且只有 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/

相关文章:

python - TCP 和 UNIX 套接字之间有区别吗?

python - conda 安装的软件包不适用于 jupyter

python - 单个 matplotlib 图中的多个图

python - PANDAS数据结构函数

android - 谷歌API map 缩放

python - 将字典列表的字典转换为数据框

python - 关键字参数和字典解包给出不同的结果

python - 如何通过 Python 中的 Sagemath 库理解可疑的语法应用

python - 如何使用Python查找文件中的特殊单词?

javascript - 使用 Scrapy 和 Splash 抓取 JS 渲染页面的问题