Seite 1 von 1

BuiltinFunctionType (Operatoren) aus txt File in Dictionary

Verfasst: Montag 21. Januar 2008, 12:41
von ete
Hallo!

ich habe folgendes Problem:

Ich möchte aus einem Text File ein folgendes Dictionary erstellen:

test = {'a': (truediv, 1000),
'b': (mul, 153)}

Wobei print test['a'][0] folgendes ausgibt: <built-in function truediv>

Mein Text File sieht so aus:

a truesdiv 1000
b mul 153

Hier der Code:

Code: Alles auswählen

from operator import mul, truediv

def dict_laden(pfad):
        d ={}  
        datei = file(pfad) 
        liste = datei.readlines() 
        for eintrag in liste:
            l_eintrag = eintrag.split() 
            d[l_eintrag[0]] = l_eintrag[1], float(l_eintrag[2])
        datei.close()
        return d

def main():
    d = dict_laden(r'operator.txt')
    x = 42 
    operation, value = d['test']
    print operation(x, value)
Wenn ich main() ausführe bekomme ich aber folgende Fehlermeldung, weil truediv als string vorliegt:
TypeError: 'str' object is not callable

Wie kann ich den Operator in einen built-in function-type umwandeln?

Liebe Grüsse
Stefanie

Verfasst: Montag 21. Januar 2008, 13:04
von gerold
Hallo ete!

Bringt dich das weiter?

Code: Alles auswählen

>>> import operator
>>> getattr(operator, "truediv", None)
<built-in function truediv>
>>> 
mfg
Gerold
:-)

Verfasst: Montag 21. Januar 2008, 13:12
von BlackJack

Code: Alles auswählen

import operator
from itertools import imap


def parse_line(line):
    name, operation, value = line.split()
    return (name, (getattr(operator, operation), float(value)))


def dict_laden(pfad):
    lines = open(pfad)
    result = dict(imap(parse_line, lines))
    lines.close()
    return result


def main():
    d = dict_laden('test.txt')
    x = 42
    operation, value = d['a']
    print operation(x, value)
:-)

Verfasst: Dienstag 22. Januar 2008, 12:52
von ete
Danke :D