Python有效地将字符串与它们的等效整数进行比较

Bry*_*yce 2 python

比较两个python值的最有效方法是什么,这两个值都可能是字符串,但可能是整数.到目前为止,我使用str(x)== str(y),但感觉效率低下(更重要的是)丑陋:

>>> a = 1.0
>>> b = 1
>>> c = '1'
>>> a == b
True
>>> b == c
False  # here I wanted this to be true
>>> str(b)==str(c)
True   # true, as desired
Run Code Online (Sandbox Code Playgroud)

我的实际对象是使用get()检索的字典值,其中大多数是字符串.

Dav*_*ver 5

测试一下.我喜欢用%timeitipython:

In [1]: %timeit str("1") == str(1)
1000000 loops, best of 3: 702 ns per loop

In [2]: %timeit "1" == str(1)
1000000 loops, best of 3: 412 ns per loop

In [3]: %timeit int("1") == 1
1000000 loops, best of 3: 906 ns per loop

除此之外,如果您真的不知道输入类型是什么,除非您想对输入数据做出假设,否则您无能为力.例如,如果您假设大多数输入相同(相同类型,相同值),您可以执行以下操作:

if a == b or str(a) == str(b):
    ... they are equal ...
Run Code Online (Sandbox Code Playgroud)

是更快,如果他们通常是相同的类型,通常等于......但如果他们通常不是同一类型的,或者不是通常等于它会慢一些.

但是,您确定在输入代码时无法将所有内容都转换为str/int吗?