在python dictionarys

时间:2017-12-01 05:30:54

标签: python

我在我们将要工作的文本文件中包含以下数据。

  

10月26日01:12 pm
  »corwinte:Ashar Delivery(64)到Rhad / Set费用:31895 CR 10月26日01:12 pm
  »corwinte:Ashar Delivery(32)到Habitat-01 / Set费用:15716 CR 10月24日04:37 pm
  »Dagon hammersmith:Ashar Delivery(23)至Lus / Set费用:11871 CR 10月24日04:33 pm
  »Dragon:Ashar Delivery(74)到Enala / Set费用:38192 CR 10月24日04:33 pm
  »Dagon hammersmith:Ashar Delivery(54)to Enala / Set Fee:27870 CR Oct 24th 04:33 pm
  »Dragon:Ashar Delivery(45)to Turroth / Set Fee:23225 CR Oct 24th 04:33 pm
  »Falconner:Ashar Delivery(38)to Ceas / Set Fee:19612 CR

我只是在学习python,所以这里是我的粗略代码,它并不是我想要它做的所有事情,但是它做了一些,有些事情不合适。

首先,我们对以日期开头的行不感兴趣,所以我们只是忽略它们。 我想要的是,为了让代码通过文本文件,收集所有名称及其信用(CR)值,计算每个名称的百分比,并将总数与名称一起存储。

到目前为止,我已经能够询问百分比,收集姓名并获得所有被告的百分比,而不是总数。

这是我的代码。

inp = input('enter the name of the file to be opened\n') #asks for a file,opens it,a guard to handle misspelled or files that don't exist
try:
    fhand = open(inp)
except:
    print('Are you on medications? there is no',inp)
    exit()
per = input('Enter the percentage you would like to calculate from,percentage of the fees recieved')
perc = float(per)
for line in fhand:
    if not line.startswith('»'): continue
    words = line.rstrip().split() #stripping the right spaces and splitting into words
    feesrecieved = words[-2]
    actam = float(feesrecieved)*perc/100
    print(words[1], actam)

我该如何说,给我每个名字的总计算值? I.E所有的龙都是牵引,所有的d d都是牵引等等。 谢谢!

1 个答案:

答案 0 :(得分:1)

我想我理解你的问题。 我会将它添加到一个字典中并在我继续时更新值。

per = input('Enter the percentage you would like to calculate 
from,percentage of the fees recieved')
perc = float(per)
totalFees = {} // create empty dict
for line in fhand:
    if not line.startswith('»'): continue
    words = line.rstrip().split() #stripping the right spaces and splitting into words
    feesrecieved = words[-2]
    actam = float(feesrecieved)*perc/100
    print(words[1], actam)
    totalFees[words[1]] = totalFees.get([words[1], 0) + actam //updating dict

您可以在找到百分比之后添加,也可以在之前添加,并在结尾计算总数