当前位置: 代码迷 >> python >> Python中的频率
  详细解决方案

Python中的频率

热度:115   发布时间:2023-06-13 14:06:18.0
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之前的位置有关。

对于最后一组元素,您永远不会将它们打印出来,因为您从未找到过不同的元素。 你需要在循环后重复打印输出。

但那是学术上的; 在现实世界中,你更有可能使用Counter

from collections import Counter
counter = Counter(data)
for key in counter:
    print("%s\t%d" % (key, counter[key]))

您可以使用countcount列表/序列中的项目。 所以你的代码可以简化为这样:

def frequencies(data):
    unique_items = set(data)
    for item in unique_items:
        print('%s\t%s' % (item, data.count(item)))