首页 > 解决方案 > int() 或 dict 用于单个数字字符串到 int 的转换

问题描述

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

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

使用这个字典转换个位数会比int()函数快吗?如果一个更快,它是否足够快来改变我应该使用哪个?

标签: python-3.xstringtype-conversionint

解决方案


让我们做一个快速的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 等。而且它更具可读性。


推荐阅读