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']].我是从银行里弄明白的