我有一个defaultdict如下所示:
my_dict = defaultdict(dict)
将打印出:
defaultdict(<class 'dict'>, {})
我还有两个列表,如下所示:
list1 = ["W", "IY", "W"]
list2 = ["w", "ee", "w"]
我想创建一个默认的dict,如下所示:
defaultdict(<class 'dict'>, {'W': {'w': 2}, 'IY': {'ee': 1}}
它将字典中的list1作为键,将键作为下一个带有单独字典的列表,将list2的实例作为值进行计数。
到目前为止我有这个:
from collections import defaultdict
d = defaultdict(dict)
list1 = ["W", "IY", "W"]
list2 = ["w", "ee", "w"]
for char in list1:
d[char] += 1
我知道这是不正确的,因为defaultdict(dict)不能这样对待。我有办法做到这一点吗?任何帮助都将不胜感激:)
根据对我最初答案的评论进行编辑。
你需要把所有可能的音素映射到所有可能的拼写(字形)。
这是一个使用
collections.Counter
的解决方案。虽然这并不严格遵循您的要求,
collections.Counter
继承自dict
,因此它具有dict
的所有属性您还可以使用嵌套的defaultdict和^{} ,如下所示:
或者,如果要保留数据结构:
使用^{} 可以访问公共
dict
的键值,这与defaultdict非常相似,但是,更新有点笨拙。相关问题 更多 >
编程相关推荐