python处理一个求和运算
黄舟
黄舟 2017-04-17 17:43:08
0
1
478

我现在有个txt文件如下:
1 167 334555717

2 19 334555718

2 167 334555718

3 167 334555720

4 172 334555721

5 21 334555723

5 147 334555723

5 50 334555723
第一列是序号,第二列是字数,第三列是ID。相同ID的序号是相同的。然后现在我需要用python进行下述处理:
就是将相同id的字数相加得到一个总和sum,然后对sum进行如下的公式计算:
result=字数1/sumlog(字数1/sum)+字数2/sumlog(字数2/sum)+......
按这个文件举例来说,就是比如334555718的这个id的result计算如下:
sum=19+167
result=19/sumlog(19/sum)+167/sumlog(167/sum)
33455723的这个id的result就是
sum=21+147+50
result=21/sumlog(21/sum)+147/sumlog(147/sum)+50/sum*log(50/sum)
然后依次输出每个id的序号,id号跟result。
我的代码如下:

import math
f = open("F:\\net.txt")         
lines = f.readlines()

rev_id=[]


for line in lines:
         num = line.split()[0]
         zishu = line.split()[2]
         revid = line.split()[3]
         sum = zishu
         if revid in rev_id:
                 sum += zishu
                 result += zishu/sum*(math.log(zishu/sum))
         
         rev_id.append(revid)
         

我的result的结果肯定不对,因为sum的值不是固定的全部总和。。请问该怎么做。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

모든 응답(1)
Peter_Zhu

참조용 Python3 코드는 다음과 같습니다.

으아아아

지침 및 제안:

Python은 open 함수를 사용하여 파일을 읽지만, 파일을 열면 문제를 피하기 위해 파일을 닫아야 합니다. 파일은 open이지만 입니다. 이는 덜 안전한 작성 방법입니다. close가 있는 곳에는 open도 있고 쌍을 이룬다는 점을 명심해야 합니다. 파일을 닫는 것을 잊어버릴 가능성을 방지하려면 close 문을 사용하는 것이 이상적입니다. with

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿