3

我需要创建一个查找表,其中 A=10 和 Z=35(B=11,C=12 等),在 python 中完成此操作的最简单方法是什么?我知道必须有一个非常简单的方法来做到这一点,只是似乎找不到它。

4

4 回答 4

11

对于查找表,您可以使用dict

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'))
于 2012-04-09T13:43:41.573 回答
7

您不需要查找表 - 表达式

chr(c) - 54

(使用c大写字符)可以解决问题。

于 2012-04-09T13:43:55.510 回答
4

我同意查找表是不必要的,但这是一个

>>> import string
>>> x = dict(zip(string.uppercase[:26],range(10,36)))
>>> x['A']
10
>>> x['Z']
35
于 2012-04-09T13:50:28.627 回答
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
于 2012-04-09T14:05:43.453 回答