def frequencies(data):
data.sort()
count = 0
previous = data[0]
print("data\tfrequency") # '\t' is the TAB character
for d in data:
if d == previous:
# same as the previous, so just increment the count
count += 1
else:
# we've found a new item so print out the old and reset the count
print(str(previous) + "\t" + str(count))
count = 1
previous = d
所以我有这个频率代码,但它每次都会在我的列表中留下最后一个数字。
这可能与我之前开始的位置有关,或者可能与我最后重置到d之前的位置有关。
答案 0 :(得分:3)
对于最后一组元素,你永远不会将它们打印出来,因为你从来没有找到过不同的东西。你需要在循环后重复打印输出。
但那是相当学术的;在现实世界中,你更有可能使用Counter
:
from collections import Counter
counter = Counter(data)
for key in counter:
print("%s\t%d" % (key, counter[key]))
答案 1 :(得分:0)
您可以使用count
计算列表/序列中的项目。因此,您的代码可以简化为:
def frequencies(data):
unique_items = set(data)
for item in unique_items:
print('%s\t%s' % (item, data.count(item)))