找出单词的频率并输出每个单词组和频率



我需要帮助。我已经尝试了大约两个星期,但都没有效果。

我有一串单词,我想找到每个单词组的频率,打印单词(如果单词出现多次也没关系(,以及每个单词对每个单词组总频率。

例如,我有以下单词:

'abc'
'abc'
'abc'
'abc'
'xyz'
'xyz'
'tuf'
'pol'
'pol'
'pol'
'pol'
'pol'
'pol'

并且需要输出为:

'abc', 4
'abc', 4
'abc', 4
'abc', 4
'xyz', 2
'xyz', 2
'tuf', 1
'pol', 6
'pol', 6
'pol', 6
'pol', 6
'pol', 6
'pol', 6

我正在使用python3,我已经尝试过这个代码,但它没有按预期工作:

curr_tk = None                         
tk = None  
count = 0 
for items in data:
line = items.strip()
file = line.split(",") 
tk = file[0]
if curr_tk == tk:
count += 1
else:
if curr_tk:
print ('%s , %s' % (curr_tk, count))
count = 1
curr_tk = tk
#print last word
if curr_tk == tk:
print ('%s , %s' % (curr_tk,count))

上面的代码给我的输出是:

'abc', 4
'xyz', 2
'tuf', 1
'pol', 6

但那不是我想要的。

假设您的数据来自列表,那么您可以执行以下

data = ['abc', 'abc', 'abc', 'abc', 'xyz', 'xyz', 'tuf', 'pol', 'pol', 'pol', 'pol', 'pol', 'pol']
frequency_map = {}
for item in data:
if item in frequency_map:
frequency_map[item] += 1
else:
frequency_map[item] = 1
for item in data:
print(f"{item}, {frequency_map[item]}")

您的输出将是:

abc, 4
abc, 4
abc, 4
abc, 4
xyz, 2
xyz, 2
tuf, 1
pol, 6
pol, 6
pol, 6
pol, 6
pol, 6
pol, 6

您可以将相同的概念应用于来自任何来源的数据。例如,如果您的输入是字符串:

data = "'abc','abc','abc','abc','xyz','xyz','tuf','pol','pol','pol','pol','pol','pol'"
frequency_map = {}
words = data.split(',')
for item in words:
if item in frequency_map:
frequency_map[item] += 1
else:
frequency_map[item] = 1
for item in words:
print(f"{item}, {frequency_map[item]}")

这被称为频率列表,这就是你在这里寻找的。

最简单的方法是这样的:

data = ['abc','abc','abc','abc','xyz','xyz','tuf','pol','pol','pol','pol','pol','pol']
for item in data :
print(item, data.count(item))

最新更新