2012-04-09 6 views
2

A = 10、Z = 35(B = 11、C = 12など)のルックアップテーブルを作成する必要があります。これはPythonでこれを達成する最も簡単な方法は何ですか?私はそれを行うには非常に簡単な方法がなければならないことを知って、ちょうどそれを見つけるように見えることができません。あなたがdictを使用することができ、ルックアップテーブルの場合Pythonルックアップテーブル

+0

手紙、またはその両方? –

+0

実際に数字を手紙に書いていますが、あなたと他の人が下に投稿した例から分かりました。本当にありがとう! – ouldsmobile

答えて

7

あなたがルックアップテーブルを必要としない - 表現

chr(c) - 54 

cは大文字でなければなりません)はそのトリックを行います。

+6

私は 'chr(c)-chr( 'A')+ 10'を好むでしょう。 –

+0

@MatteoItalia:私もそうですが、編集しようとしていたとき、Markはすでにそれを投稿していました。 :) –

+0

はこの例のようなものになりました。ありがとう! – ouldsmobile

10

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

しかし、この場合には、結果を計算するための簡単な論理ルールので、代わりにあなただけで機能を使用することができ、ルックアップテーブルがあるようですいくつかの簡単な計算:

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

迅速な対応に感謝します。この方法も有効でした。 – ouldsmobile

4

私は簡単な方法となるだろうルックアップテーブルが不要であることに同意しますが、ここで1

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

です:数字に、あなたは文字から数字へのルックアップテーブルをしたいです

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 
関連する問題