Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中计算元组中的项_Python_Tuples - Fatal编程技术网

在Python中计算元组中的项

在Python中计算元组中的项,python,tuples,Python,Tuples,我对python相当陌生,我不知道如何执行以下操作 我有一个(单词,标签)元组列表 我试图找到所有已分配给每个单词的标记,并收集它们的计数。例如,单词“run”被两次标记为“名词”,一次标记为“动词” 澄清一下:我想创建另一个元组列表,其中包含(单词、标记、计数)非常简单,有一个: >>从集合导入defaultdict >>>输出=defaultdict(defaultdict(int).copy) >>>对于word,在一个: ... 输出[word][tag]+=1 ...

我对python相当陌生,我不知道如何执行以下操作

我有一个(单词,标签)元组列表

我试图找到所有已分配给每个单词的标记,并收集它们的计数。例如,单词“run”被两次标记为“名词”,一次标记为“动词”

澄清一下:我想创建另一个元组列表,其中包含(单词、标记、计数)

非常简单,有一个:

>>从集合导入defaultdict
>>>输出=defaultdict(defaultdict(int).copy)
>>>对于word,在一个:
...     输出[word][tag]+=1
...     
>>>输出
defaultdict(,
{'Run':defaultdict(int,{'noon':2,'动词':1}),
'The':defaultdict(int,{'Article':1,'DT':1})
您可以使用:


为了澄清-您只会计算“run”两次而不是三次,因为它已经被分配给“noon”一次了?使用
collections.Counter
制作“defaultdict”的defaultdict的有趣方法。我通常使用
defaultdict(lambda x:defaultdict(int))
。@alecxe我从另一个SO成员那里偷了这个把戏。它在python3上快一点,在Python2上慢一点。。
a = [('Run', 'Noun'),('Run', 'Verb'),('The', 'Article'),('Run', 'Noun'),('The', 'DT')]
>>> from collections import defaultdict
>>> output = defaultdict(defaultdict(int).copy)
>>> for word, tag in a:
...     output[word][tag] += 1
...     
>>> output
defaultdict(<function copy>,
            {'Run': defaultdict(int, {'Noun': 2, 'Verb': 1}),
             'The': defaultdict(int, {'Article': 1, 'DT': 1})})
>>> import collections

>>> a = [('Run', 'Noun'),('Run', 'Verb'),('The', 'Article'),('Run', 'Noun'),('The', 'DT')]
>>> counter = collections.Counter(a)
Counter({('Run', 'Noun'): 2, ('Run', 'Verb'): 1, ... })

>>> result = {}
>>> for (tag, word), count in counter.items():
...     result.setdefault(tag, []).append({word: count})

>>> print(result)
{'Run': [{'Noun': 2}, {'Verb': 1}], 'The': [{'Article': 1}, {'DT': 1}]}