Python中的频率

时间:2015-10-19 02:29:46

标签: python

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之前的位置有关。

2 个答案:

答案 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)))