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

标签 python arrays list dictionary

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

相关文章:

python - 计算字符串内列表中的子字符串

python - 语法错误 : SQL INSERT from Python + Scrapy?

python - Gmail IMAP 身份验证 - imaplib.authenticate 恰好需要 3 个参数(给定 4 个)

iOS swift : Filter array to unique items

javascript - 如何在 AngularJs 中将 json 数组转换为 js 数组?

带有数组的 Java Collections.rotate() 不起作用

python - 根据条件将值应用于数字的所有实例

python - 无法安装win32gui

arrays - 使用 Zip2 进行 Swift 数组扩展

arrays - 安排N个人的 session