Skip to main content
 首页 » 编程设计

python之计算嵌套列表中的唯一元组

2025年05月04日20haluo1

我有一个二维数组,其中每个元素都是一对两个标记,例如 ["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})