【python】Python遍历dict的key最高效的方法是什么?

来源:https://segmentfault.com/q/1010000002581747

方法一:直接遍历 速度快

for key in _dict:
    pass

方法二:iterkeys() 速度快

for _ in testDict.iterkeys():
        pass

方法三:keys()  速度慢  因为keys()须要形成一个列表,构建一个列表对于一个大的dict开销是很大的。

for _ in testDict.keys():
        pass

时间对比:

import timeit

DICT_SIZE = 100*10000

testDict = dict()
for i in range(DICT_SIZE):
    testDict[i] = i  # 构建大小为100W的字典

assert len(testDict) == DICT_SIZE

def test1():
    for _ in testDict.keys():
        pass

def test2():
    for _ in testDict:
        pass

def test3():
    for _ in testDict.iterkeys():
        pass
# 分别测试2K次
print timeit.timeit("test1()", setup="from __main__ import test1", number=2000)
print timeit.timeit("test2()", setup="from __main__ import test2", number=2000)
print timeit.timeit("test3()", setup="from __main__ import test3", number=2000)

输出
54.1994677764
30.2660675759
31.3075812315

是windows + python 2.7的结果

时间: 2024-08-27 07:49:45

【python】Python遍历dict的key最高效的方法是什么?的相关文章

python中遍历dict的value

之前提到过,在dict中,可以通过d[索引]或者d.get[索引]两种方式来获取某个key对应的value,其实,python有内置的函数,可以直接遍历dict中的value 一.d.values():这个函数可以将dict中的value全部拿出来,变成一个list,我们遍历这个list就可以拿到所有的value了 上图中,itervalues()的作用和values()一样,只是itervalues()不用生成list,比较节省内存. 二.d.items():这个函数可以将key和value一

python tips:作为dict的key的类

Python的dict由hash实现,解决hash冲突的方法是二次探查法.hash值相同的元素会形成链表.所以dict在查找key时,首先获取hash值,直接得到链表的表头:而后在链表中查找等于key的值. 所以要使一个对象的实例能够作为dict的key值,一般需要实现__hash__和__eq__两个方法. 没有实现__eq__方法的类的实例总是不相等(引用总是不同) 1 class A: 2 def __hash__(self): 3 return 2 4 5 a = A() 6 b = A

Python中dict的特点、更新dict、遍历dict

dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样.而list的查找速度随着元素增加而逐渐下降. 不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢. 由于dict是按 key 查找,所以,在一个dict中,key不能重复. dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样: d = { 'Adam': 95, 'Lisa': 85, 'Ba

Python 遍历dict

遍历dict 由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现. 直接使用for循环可以遍历 dict 的 key: >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } >>> for key in d: ... print key ... Lisa Adam Bart 由于通过 key 可以获取对应的 value,因此,在循环体内,可以获取到value的值.

Python: 遍历

======================遍历列表========================# 直接遍历list: for elem in list: pass # 通过索引获取 for i in range(len(list)): elem = list[i] pass # 基于enumerate()遍历 for i, elem in enumerate(list): pass # 基于iter()遍历 listIter = iter(list) while True: try: el

python入门七(迭代)【9-3 python之迭代dict的value和key】

9-3 python之迭代dict的value和key 我们了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和value?答案是肯定的. 首先,我们看看 dict 对象的 items() 方法返回的值: >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } >>> print d.items() [('Lisa', 85), ('Adam', 95), ('Bart', 59)]

Python遍历字典去key和value需要注意的点→enumerate和items()

嗯,首先在提到enumerate()这个枚举方法之前,我想到的就是这个可以遍历任何一个元素,可以打印出来key和value,但是我没有想到的是,这个遍历的,仅仅限于遍历打印出索引和元素. 碰到这个问题是因为在做一个罗马数字运算引发的....来看一下详细的代码 ir = {'1000': 'M', '900': 'CM', '500': 'D', '400': 'CD', '100': 'C', '90': 'XC', '50': 'L'} for i,v in enumerate (ir): p

python无限遍历,实现在多维嵌套字典、列表、元组的JSON中获取数据

接口返回json数据中可能嵌套列表,列表内又嵌套字典的情况, 接口自动化过程中需要通过一个key值直接获取到对应的value,所以有了下面的函数 不多说,上代码: #! /usr/bin/python # coding:utf-8 """ @author:Bingo.he @file: get_target_value.py @time: 2017/12/22 """ def get_target_value(key, dic, tmp_list

Python学习——使用dict和set

dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list: names = ['Michael', 'Bob', 'Tracy'] scores = [95, 75, 85] 给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长. 如