2009-12-29 7 views
0
f = open('transaction.log','r') 

ClerkHash = dict() 
arr = [0,0] 

for line in f: 
    Tdate  = line[0:12] 
    AccountKey = line[12:50] 
    TransType = line[22:2] 
    ClerkKey  = line[24:10] 
    CurrencyCode = line[34:2] 
    Amount  = line[36:45] 
    print line 
    print '\n' 
    print AccountKey 
    print '\n' 
    print Tdate   print '\n' 

    if TransType=="04": 
     ClerkHash[ClerkKey+AccountKey] = arr; // is this line corrent ? i don't want to corrupt the array every time ? how should i do it ? 
     ClerkHash[ClerkKey+AccountKey][0]+=1 
     ClerkHash[ClerkKey+AccountKey][1]+= Amount 


for Key in ClerkHash.keys(): 
    if ClerkHash[key][0] >= 3 and ClerkHash[key][1] > 1000: 
     print Key 

je veux avoir un nom de hachage ClerkHash [ClerkKey + AccountKey] qui consistes de tableau de 2 int: premier indice est withdrawl num, et le second est ammount a fait J'ai défini le tableau et le hachage bien? en plus je veux résumer l'ammount ... comment puis-je le faire?python - problème int/string et hachage/array

+0

N'êtes-vous pas censé faire 'l'impression AccountKey' (par opposition à un peu' AccountKey') –

+1

Il serait vraiment utile si vous avez spécifié ce que le résultat attendu serait. Et ce qui se passe à la place. – Skurmedel

+0

ligne [22: 2] ne retournera jamais rien, puisque la fin de la tranche est avant le début. – nosklo

Répondre

2

est peu question que je vu ici jusqu'à présent

Amount  = line[36:45] 

devrait être

Amount  = int(line[36:45]) 

et

ClerkHash[ClerkKey+AccountKey] = arr[0,0] 

devrait être

ClerkHash[ClerkKey+AccountKey] = [0,0] 
0

Vérifiez vos intervalles de tranche! Le deuxième argument est un autre index, PAS le nombre d'étapes à prendre du premier index. Je suppose que

TransType = line[22:2] 

devrait plutôt être

TransType = line[22:24] 

vous écrasez les valeurs si vous définissez

ClerkHash[ClerkKey+AccountKey] = [0, 0] 

chaque fois que vous rencontrez TransType == "04". Donc, changer

if TransType=="04": 
     ClerkHash[ClerkKey+AccountKey] = arr[0,0] 
     ClerkHash[ClerkKey+AccountKey][0]+=1 
     ClerkHash[ClerkKey+AccountKey][1]+= Amount 

à

if TransType=="04": 
    if not ClerkHash.has_key(ClerkKey+AccountKey): 
     ClerkHash[ClerkKey+AccountKey] = [1, Amount] 
    else: 
     ClerkHash[ClerkKey+AccountKey][0] += 1 
     ClerkHash[ClerkKey+AccountKey][1] += Amount