Python 通过defaultdict从字符串创建键/值
我想使用字符串创建一个默认dict。假设我有“你好”这个词: 我希望函数返回:Python 通过defaultdict从字符串创建键/值,python,dictionary,key,defaultdict,Python,Dictionary,Key,Defaultdict,我想使用字符串创建一个默认dict。假设我有“你好”这个词: 我希望函数返回: {'h':{'e'}, 'e':{'l'}, 'l':{'l', 'o'}} 我尝试先创建一个defaultdict(set)以消除所有重复项,但我不确定如何从字符串中的下一个字母中获取键的值(如果有意义的话?) 这会返回一个错误,说明str对象如何没有“add”属性。您的代码工作正常: >>> from collections import defaultdict >>> de
{'h':{'e'}, 'e':{'l'}, 'l':{'l', 'o'}}
我尝试先创建一个defaultdict(set)以消除所有重复项,但我不确定如何从字符串中的下一个字母中获取键的值(如果有意义的话?)
这会返回一个错误,说明str对象如何没有“add”属性。您的代码工作正常:
>>> from collections import defaultdict
>>> def next(s):
... x = defaultdict(set)
... for i in range(len(s)-1):
... x[i].add(s[i+1])
... return x
...
>>> next('hello')
defaultdict(<type 'set'>, {0: set(['e']), 1: set(['l']), 2: set(['l']), 3: set(['o'])})
这将产生所需的输出:
>>> def next(s):
... x = defaultdict(set)
... for i in range(len(s)-1):
... x[s[i]].add(s[i+1])
... return x
...
>>> next('hello')
defaultdict(<type 'set'>, {'h': set(['e']), 'e': set(['l']), 'l': set(['l', 'o'])})
跟踪以前的值(向后看)要比向前看容易得多;毕竟,您已经传递了以前的值。Omg谢谢!x[s[i]]为我提供了我想要的结果。这么小的错误!谢谢!:)
def next(s):
x = defaultdict(set)
for i in range(len(s)-1):
x[s[i]].add(s[i+1])
return x
>>> def next(s):
... x = defaultdict(set)
... for i in range(len(s)-1):
... x[s[i]].add(s[i+1])
... return x
...
>>> next('hello')
defaultdict(<type 'set'>, {'h': set(['e']), 'e': set(['l']), 'l': set(['l', 'o'])})
def next_dict(s):
x = defaultdict(set)
prev = s[0]
for char in s[1:]:
x[prev].add(char)
prev = char
return x