2012-04-09 5 views
2

Ich habe eine Lookup-Tabelle, wo A = 10 und Z = 35 (B = 11, C = 12 und so weiter), was ist der einfachste Weg, dies in Python zu erreichen? Ich weiß, dass es eine sehr einfache Möglichkeit geben muss, es einfach nicht finden zu können.Python Lookup-Tabelle

+0

Haben Sie eine Lookup-Tabelle von Buchstaben in Zahlen wollen, Zahlen Briefe oder beides? –

+0

Mache tatsächlich Nummer zu Brief, aber habe es aus den Beispielen herausgefunden, die du und andere unten gepostet haben. Vielen Dank! – ouldsmobile

Antwort

7

Sie brauchen keine Look-up-Tabelle - der Ausdruck

chr(c) - 54 

(mit c mit dem Großbuchstaben) wird den Trick machen.

+6

Ich würde 'chr (c) -chr ('A') + 10 'bevorzugen. –

+0

@MatteoItalia: Ich auch, aber als ich es gerade bearbeiten wollte, hatte Mark es schon gepostet. :) –

+0

endete mit so etwas wie dieses Beispiel. Vielen Dank! – ouldsmobile

10

Für eine Lookup-Tabelle Sie ein dict verwenden:

d = { 'A' : 10, 'Z' : 35 } # etc.. 

jedoch in diesem Fall benutzen Sie könnten es scheint, dass es eine einfache logische Regel ist für die Berechnung des Ergebnisses so statt einer Lookup-Tabelle nur eine Funktion mit einige einfache Arithmetik:

def letterToNumber(c): 
    if not 'A' <= c <= 'Z': 
     raise ValueError('invalid character: ' + c) 
    return ord(c) - ord('A') + 10 

def numberToLetter(x): 
    if not 10 <= x <= 35: 
     raise ValueError('invalid number: ' + x) 
    return chr(x - 10 + ord('A')) 
+0

Danke für die schnelle Antwort. Diese Methode hat auch funktioniert. – ouldsmobile

4

Ich bin damit einverstanden, dass eine Lookup-Tabelle nicht erforderlich ist, aber hier ist ein

>>> import string 
>>> x = dict(zip(string.uppercase[:26],range(10,36))) 
>>> x['A'] 
10 
>>> x['Z'] 
35 
0

ich mit dem einfachen Ansatz gehen würde:

import string 

def make_lookup_table(): 
    "make a lookup table where 'A' -> 10, 'B' -> 11, ..., 'Z' -> 35" 
    lookup_table = {} 
    value = 10 
    for letter in string.uppercase[:26]: 
     lookup_table[letter] = value 
     value += 1