我有一个二维数组,其中每个元素都是一对两个标记,例如 ["NOUN", "VERB"],我想计算这些唯一对在大型数据集中出现的次数。
到目前为止,我已尝试使用 defaultdict(int) 和 Counter() 轻松添加以前未找到的元素,或者如果找到则将值增加 1。
dTransition = Counter()
# dTransition = defaultdict(int)
# <s> is a start of sentence tag
pairs = [[('<s>', 'NOUN')], [('CCONJ', 'NOUN')], [('NOUN', 'SCONJ')], [('SCONJ', 'NOUN')]]
for pair in pairs:
dTransition[pairs] += 1
这不起作用,因为它不接受两个参数。所以我想知道是否有一种简单的方法来检查字典是否存在二维数组的键,如果存在,则将值增加 1。
最佳答案
鉴于与列表不同,元组可散列,因此您需要将列表展平。一个简单的选项是使用 itertools.chain
然后用元组列表构建一个 Counter
:
from itertools import chain
Counter(chain(*pairs))
输出
Counter({('<s>', 'NOUN'): 1, ('CCONJ', 'NOUN'): 1,
('NOUN', 'SCONJ'): 1, ('SCONJ', 'NOUN'): 1})
关于python - 计算嵌套列表中的唯一元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55419010/