gpt4 book ai didi

python - 为单词python创建一个嵌套字典

转载 作者:太空狗 更新时间:2023-10-30 01:02:07 26 4
gpt4 key购买 nike

我有一个单词列表,我想将它们存储在嵌套字典中。

这是示例列表:-

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创建一个嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19473085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com