python 统计个数怎么统计

7月1日 苹果 7月2日 香蕉 7月3日 香蕉 7月4日 梨 7月5日 西瓜 7月6日 西瓜 7月7日 梨 7月8日 西瓜 7月9日 苹果 7月10日 香蕉 7月11日 苹果 7月12日 香蕉 7月13日 香蕉 7月14日 苹果 7月15日 香蕉 7月16日 梨 7月17日 西瓜 7月18日 苹果 7月19日 梨 7月20日 西瓜 7月21日 梨 7月22日 苹果 7月23日 香蕉 7月24日 梨 7月25日 西瓜 7月26日 苹果 7月27日 苹果 7月28日 苹果 7月29日 苹果 7月30日 西瓜 7月31日 西瓜 例上面为txt 文件里面内容,怎么样 (1)列出第二行水果最多的3个名称和个数 (2)列出每个水果的总次数
2026年09月24日 04:38
有2个网友回答
网友(1):

# -*- coding: cp936 -*-
fruitfile=open(r"fruit.txt")
fruitdict={}
for line in fruitfile.readlines():
    fruit=line.split()[1]
    if fruitdict.has_key(fruit):
        fruitdict[fruit]+=1
    else:
        fruitdict[fruit]=1
fruitlist=[]
for key,value in fruitdict.items():
    fruitlist.append((key,value))
fruitlist.sort(lambda a,b:b[1],reverse=True)
if len(fruitlist)>=3:
    print "出现次数前三的水果:"
    print fruitlist[0][0],fruitlist[0][1]
    print fruitlist[1][0],fruitlist[1][1]
    print fruitlist[2][0],fruitlist[2][1]
print "\n\n所有水果出现次数:"
for key,value in fruitlist:
    print key,value


其中fruit.txt为文件名

网友(2):

# -*- coding: cp936 -*-
def f():
    for line in open("data.txt"): #读取文件
        yield line
def f2(f):
    for line in f:
        for i, k in enumerate(line.split()):
            if i == 1:
                yield k #得到水果
f = f()
d = f2(f)
l ={}
for i in d:
    n=l.get(i)
    if n is None:
        l.update({i:1})
    else:
        l.update({i:n+1})

res=""
for i in range(3):
    for j in l:
        k= max(l)
        res+= k +"->" +str(l[k]) +';'
        l.pop(k)
        break

print res #打印结果