当前位置:首页 » 编程语言 » pythondictin

pythondictin

发布时间: 2023-10-05 03:49:46

㈠ 如何用python dict存储大量数据

我们以往的经验,生成对比信息的字典代码如下:

def getCurrentCompareMessageDict0(dict0, dict1):
'''未被优化的获取当前对比信息字典'''
dlist0=list(dict0.keys())
dlist1=list(dict1.keys())
dict2={}
for i in range(len(dlist1)):
if dlist1[i] not in dlist0:
key=dlist1[i]
value=[0, dict1[dlist1[i]]]
dict2[key]=value
else:
if dict1[dlist1[i]]/100.0 != dict0[dlist1[i]]:
key=dlist1[i]
value=[dict0[dlist1[i]], dict1[dlist1[i]]]
dict2[key]=value
return dict2
即,先构建两个dict的key列表。

然后,以key列表的长度为上限,进行for循环,采用DICT[KEY]的方式来进行列表数据的筛选。
这个方法的运行是超级慢的。

㈡ python内置数据类型列表list和字典dict的性能

    我们来讨论下python的两种最重要的内置数据类型列表list和字典dict上,各种操作的复杂度。

list列表数据类型常用操作性能:

1、按索引取值和赋值(v=a[i],a[i]=v)

由于列表的随机访问特性,这两个操作执行时间与列表大小无关,均为O(1)

2、列表的曾长,可以选择append()和_add_() "+"

list.append(v)的执行时间O(1)

list = list + [v],执行时间是O(n+k),因为新增了一个新的列表,其中k是被加的列表长度

举例:4种生成前n个整数列表的方法

如图:

我们可以计算一下这四个函数的耗时,如下

执行结果:

我们可以看到,4种方法运行时间差别很大,test1使用列表连接最慢,而test4使用list range最快,速度相差近200倍。

    如下图,我们总结下list基本操作的性能如何:

上图可知pop()从列表末尾移除元素O(1),但是pop(i)从列表中间移除元素要O(n),为什么呢?

因为从中部移除元素,要把移除元素后面的元素全部向前挪一位,才保证了列表按索引取值和赋值很快,达到O(1)。

dict数据类型:

    字典和列表不同,dict根据key找到value,而list根据index。

    字典最常用的取值get和赋值set,其性能为O(1),而contain(in)操作判断字典是否存在某个key,其性能也是O(1)

list和dict的in操作对比:

    设计一个性能试验,验证list中检索一个值,对比dict中检索一个值的耗时对比。如下程序:

如果如下:

可见list的in操作复杂度为O(n)

PS:大家可以去python官方的算法复杂度网站看看:

https://wiki.python.org/moin/TimeComplexity

㈢ python中in后面大括号是什么

代表dict字典数据类型。
pythonin后面的大括号即花括号,代表dict字典数据类型,字典是由键对值组组成。冒号分开键和值,逗号隔开组。
python中的小括号,代表tuple元组数据类型,元组是一种不可变序列,python中的中括号,代表list列表数据类型。分别用来代表不同的python基本内置数据类型。

㈣ python中字典的使用方法怎么样的

dict全称dictionary,使用键-值(key-value)存储,具有极快的查找速度。
举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:
names = ['Michael', 'Bob', 'Tracy']
scores = [95, 75, 85]

给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。
如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95

把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:
>>> d['Adam'] = 67
>>> d['Adam']
67

由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:
>>> d['Jack'] = 90
>>> d['Jack']
90
>>> d['Jack'] = 88
>>> d['Jack']
88

如果key不存在,dict就会报错:
>>> d['Thomas']
Traceback (most recent call last):
File "", line 1, in KeyError: 'Thomas'

要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:
>>> 'Thomas' in dFalse

二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
要删除一个key,用pop(key)方法,对应的value也会从dict中删除:
>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}

热点内容
svn连接服务器地址 发布:2025-02-01 11:51:31 浏览:416
对源程序为什么要编译 发布:2025-02-01 11:47:46 浏览:218
sql表添加记录 发布:2025-02-01 11:22:08 浏览:864
word编辑加密 发布:2025-02-01 11:18:53 浏览:571
php变量文本 发布:2025-02-01 11:10:46 浏览:426
音悦台上传mv 发布:2025-02-01 11:05:02 浏览:516
微信如何设置访问限制 发布:2025-02-01 10:43:06 浏览:335
b站缓存视频下架还有吗 发布:2025-02-01 10:37:52 浏览:940
e卡通初始密码是多少 发布:2025-02-01 10:31:55 浏览:127
phppost上传文件 发布:2025-02-01 10:26:42 浏览:105