首页 / PYTHON / 为单词python创建嵌套字典
为单词python创建嵌套字典
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为单词python创建嵌套字典,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1872字,纯文字阅读大概需要3分钟。
内容图文
![为单词python创建嵌套字典](/upload/InfoBanner/zyjiaocheng/827/cf895153faae4b6d92c684e15c976777.jpg)
我有一个单词列表,我想将它们存储在嵌套字典中.
以下是样本清单: –
words = ['Apple','Ape','Bark','Barn']
我要创建的字典如下: –
{'A':{'P':{'E':{},
'P':{'L':{'E':{}}}}},
'B':{'A':{'R':{'K':{},'N':{}}}}}
这些词不区分大小写.
解决方法:
改为使用collections.defaultdict()对象:
from collections import defaultdict
def tree():
return defaultdict(tree)
nested = defaultdict(tree)
for word in words:
node = nested
for char in word:
node = node[char.upper()]
每当您尝试访问尚不存在的defaultdict中的密钥时,将调用默认工厂以透明地为该密钥生成值.在上面的代码中,默认工厂是tree(),它使用相同的工厂生成另一个defaultdict(),只需通过访问键就可以构建一组嵌套的字典.
演示:
>>> from collections import defaultdict
>>> def tree():
... return defaultdict(tree)
...
>>> nested = defaultdict(tree)
>>> words = ['Apple','Ape','Bark','Barn']
>>> for word in words:
... node = nested
... for char in word:
... node = node[char.upper()]
...
>>> nested
defaultdict(<function tree at 0x114e62320>, {'A': defaultdict(<function tree at 0x114e62320>, {'P': defaultdict(<function tree at 0x114e62320>, {'P': defaultdict(<function tree at 0x114e62320>, {'L': defaultdict(<function tree at 0x114e62320>, {'E': defaultdict(<function tree at 0x114e62320>, {})})}), 'E': defaultdict(<function tree at 0x114e62320>, {})})}), 'B': defaultdict(<function tree at 0x114e62320>, {'A': defaultdict(<function tree at 0x114e62320>, {'R': defaultdict(<function tree at 0x114e62320>, {'K': defaultdict(<function tree at 0x114e62320>, {}), 'N': defaultdict(<function tree at 0x114e62320>, {})})})})})
>>> def print_nested(d, indent=0):
... for k, v in d.iteritems():
... print '{}{!r}:'.format(indent * ' ', k)
... print_nested(v, indent + 1)
...
>>> print_nested(nested)
'A':
'P':
'P':
'L':
'E':
'E':
'B':
'A':
'R':
'K':
'N':
defaultdict是标准Python字典的子类,除了自动实现键的值之外,其行为与常规字典完全相同.
内容总结
以上是互联网集市为您收集整理的为单词python创建嵌套字典全部内容,希望文章能够帮你解决为单词python创建嵌套字典所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。