int()或dict,用于将一位数字字符串转换为int

时间:2019-08-03 14:17:01

标签: python-3.x string type-conversion int

我正在尝试将一位数字字符串转换为整数。例如,如果我有"2" <-- str,我想将其更改为2 <-- int。我知道python中的int()函数可以为我做到这一点,但是我想知道我是否制作了这样的字典,

strToNumDict{
  "0": 0
  "1": 1
  "2": 2
  "3": 3
  "4": 4
  "5": 5
  "6": 6
  "7": 7
  "8": 8
  "9": 9
}

使用该词典转换单个数字是否比int()函数更快?而且如果速度更快,是否足够快以至于我应该使用哪一个就有所作为?

1 个答案:

答案 0 :(得分:0)

让我们做一个快速的timeit基准测试。我们随机产生一位数字,并将尝试将其转换为整数(x 1_000_000次):

strToNumDict = {
  "0": 0,
  "1": 1,
  "2": 2,
  "3": 3,
  "4": 4,
  "5": 5,
  "6": 6,
  "7": 7,
  "8": 8,
  "9": 9
}

def convert1(s):
    return strToNumDict[s]

def convert2(s):
    return int(s)

import timeit
import random

digits = list('0123456789')

t1 = timeit.timeit(lambda: convert1(random.choice(digits)), number=1_000_000)
t2 = timeit.timeit(lambda: convert2(random.choice(digits)), number=1_000_000)

print(t1)
print(t2)

在我的机器上打印(AMD 2400G,Python 3.6.8):

0.6220340259897057
0.727682675991673

在这种情况下,基于dict的版本边缘更快。就个人而言,不值得付出努力。使用int(),您可以从负数(大于9等)进行转换。它更具可读性。