Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 3.x 根据第一个索引项查找列表中单词的频率_Python 3.x_List_Numpy - Fatal编程技术网

Python 3.x 根据第一个索引项查找列表中单词的频率

Python 3.x 根据第一个索引项查找列表中单词的频率,python-3.x,list,numpy,Python 3.x,List,Numpy,假设我有一个这样的列表 my_list = [(1, 'A'), (1, 'A'), (1, 'A'), (1, 'B'), (20, 'BB'), (20, 'BB'), (100, 'CC'), (100, 'CC'), (100, 'CC')] 现在我想用Python3编写一个代码,以便它根据第一项返回item的第二个元素的频率。 例如,我希望输出打印如下内容: 1: 3 (A), 1 : 1 (B), 20: 2(BB), 100: 3(CC) 对不起,英语不好。如有任何帮助,

假设我有一个这样的列表

my_list = [(1, 'A'), (1, 'A'), (1, 'A'), (1, 'B'), (20, 'BB'), 
  (20, 'BB'), (100, 'CC'), (100, 'CC'), (100, 'CC')]
现在我想用Python3编写一个代码,以便它根据第一项返回item的第二个元素的频率。 例如,我希望输出打印如下内容:

1: 3 (A), 1 : 1 (B), 20: 2(BB), 100: 3(CC)

对不起,英语不好。如有任何帮助,我们将不胜感激。

使用“收集”模块中的计数器方法

from collections import Counter
my_list = [(1, 'A'), (1, 'A'), (1, 'A'), (1, 'B'), (20, 'BB'), 
  (20, 'BB'), (100, 'CC'), (100, 'CC'), (100, 'CC')]
print(Counter(my_list))
输出:

Counter({(1, 'A'): 3, (100, 'CC'): 3, (20, 'BB'): 2, (1, 'B'): 1})

您还可以使用Dict来实现这一点,而不是导入集合。由于列表中的项是元组,因此它们可以用作字典的键

以下是如何做到这一点:

list = [(1, 'A'), (1, 'A'), (1, 'A'), (1, 'B'), (20, 'BB'),  (20, 'BB'), (100, 'CC'), (100, 'CC'), (100, 'CC')]

dict = {}

for item in list:
    if item in dict:
        dict[item] += 1
    else:
        dict[item] = 1
print(dict)

我不知道为什么,但当我尝试使用计数器作为您的建议时,我得到了这个错误[u count_elements(self,iterable)TypeError:unhable type:“writeable void scalar:”您能告诉我您提供了什么输入吗?计数器对不可散列的类型不起作用,例如,颜色=['red','warm',['blue','cold'],['red','warm']].我是从银行里弄明白的