python的一个简单问题.

小小小小周 2012-02-13 09:23:38
刚学python不久,还没有看到如何处理txt文本的章节,现在有个任务,想来半天找来半天找不到如何写。
麻烦高人指点下:
有个txt的文档,里面是1,2,3,4,4,1,2,2 等这些数字,我现在想实现的功能是找出这些数字的频率,按照频率从高到低排序。
上面的例子想得出的结果是:
2 3
1 2
4 2
3 1
...全文
286 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
virusswb 2012-02-17
  • 打赏
  • 举报
回复
好好的学学数据结构吧
用个字典
大不了顶一个类,然后循环统计每个数字的个数

cwt8805 2012-02-17
  • 打赏
  • 举报
回复
4楼代码过不了。
cwt8805 2012-02-17
  • 打赏
  • 举报
回复

f = open("data.txt","r")
fdata = f.read()
f.close()

fdata_a = fdata.split(",")
fdata_p = {}

for char in fdata_a:
if not fdata_p.has_key(char):
fdata_p[char] = 1
else:
fdata_p[char] += 1

data_keys = fdata_p.keys()
data_values = fdata_p.values()

while len(data_values) > 0:
ind = data_values.index(max(data_values))
print data_keys[ind],data_values[ind],"\n"
del data_keys[ind],data_values[ind]
binglex 2012-02-15
  • 打赏
  • 举报
回复
楼上代码乱了,还不让编辑?


f = open('e:\\test.txt','rt')
r = {}
for s in f:
s = s.strip()
if r.has_key(s):
r[s] += 1
else:
r[s] = 1

for k,v in r.iteritems():
print k,':',v

binglex 2012-02-15
  • 打赏
  • 举报
回复
如果文件太大、很多重复的话还是用字典最合适dict;

f = open('test.txt','rt') #每行一个数字
r = {}
for s in f:
s = s.strip() #删除回车
if r.has_key(s):
r[s] += 1
else:
r[s] = 1

for k,v in r.iteritems():
print k,':',v



[Quote=引用 2 楼 thundor 的回复:]

Python code
list = [1,2,3,4,4,1,2,2 ]

for i in set(list):
print i,list.count(i)
[/Quote]
zengna_com 2012-02-14
  • 打赏
  • 举报
回复
list = [1,2,3,4,4,1,2,2 ]

for i in set(list):
print i,list.count(i)
panghuhu250 2012-02-13
  • 打赏
  • 举报
回复
假设文档格式是逗号分开的数字,文档不是太大(能一次读入内存)

打开文件:open
读入: read()
分割字符串:split
计数:dictionary
排序:sorted(list, key=...)


# coding: utf-8
def number_count(f):
numbers = map(int, open(f).read().split(',')) #假设数字是用","分开的
freqs = {}
for n in numbers:
freqs[n] = freqs.get(n, 0) + 1
return freqs

def print_result(freqs):
for n, f in sorted(freqs.items(), key=lambda i: -i[1]):
print "%d\t%d" % (n, f)

if __name__=='__main__':
import sys
print_result(number_count(sys.argv[1]))


测试:

/tmp/ cat x.txt
1,2, 3,4,4,1,2,2,33
/tmp/ python numcount.py x.txt
2 3
1 2
4 2
3 1
33 1


37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧