Python 基础教程

Python 高级教程

Python 相关应用

Python 笔记

Python FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/python-check-key-exist-in-dict.html

python 字典如何判断指定的 key 是否存在的几种方式及性能对比

Python 笔记 Python 笔记


在 python 中,判断字典中指定的 key 是否存在有三种方式,if key in dctif key in dct.keys() 和 if dct.has_key(key),其中 key in dct 形式效率最快,推荐使用。

key in dct(推荐方式)

dct = {'knowledge': 18, "dict": 8}
if 'knowledge' in dct:
    print(dct['knowledge'])

key in dct.keys()

if 'knowledge' in dct.keys():
    print(dct['knowledge'])

dct.has_key(key)(python 2.2 及以前)

python 2.2 及之前的版本,字典提供了查询指定 key 是否存在的函数 has_key,但在 python 3 已经删除。

if dct.has_key('knowledge'):
    print(dct['knowledge'])

三种方式的效率对比

import time
from matplotlib import pyplot as plt

n = 10000
time1 = []
time2 = []
time3 = []
for n in range(100,10100,100):
    my_dict = {}
    for i in range(n):
        my_dict[i] = i

    start = time.time()
    for i in range(n):
        if i in my_dict.keys():
            pass
    end = time.time()
    print end - start
    time1.append(end - start)

    start = time.time()
    for i in range(n):
        if my_dict.has_key(i):
            pass
    end = time.time()
    print end - start
    time2.append(end - start)

    start = time.time()
    for i in range(n):
        if i in my_dict:
            pass
    end = time.time()
    print end - start
    time3.append(end - start)

t = range(100,10100,100)
plt.plot(t, time1, label='in keys()')
plt.plot(t, time2, label='has_key')
plt.plot(t, time3, label='in')
plt.legend()
plt.show()

 

python 字典遍历的有三大方式,分别是遍历 keys、遍历 values 和同时 遍历 keys 和 values。 ...
在Django模板中,我们经常需要判断变量是否存在或者是否有值,以便在模板中进行条件控制和展示不同的内容。在上面的示例代码中,我们检查变量v ...
linux shell 脚本判断文件是否存在,主要是利用 test 表达式的,具体参考如下。 ...
字典是 python 中重要的数据类型,对应内置函数 dict,它是一个无序、可变、由键值对组成的集合,我们可以通过引用键名来访问字典中数据 ...
python 字典类型的 key value 数据进行交换,主要有 2 种方式,一种是字典遍历后 kv 对换,另一种是通过 zip 函数将 ...