【python】dict的注意事项

1. key不能用list和set

由于列表是易变的,故不可做key。如果使用会报错

但是元组可以做key

2.遍历方法

for key in somedict:
    pass

速度快,但是如果要删除元素会导致错误,出错情况如下

#这里初始化一个dict
>>> d = {‘a‘:1, ‘b‘:0, ‘c‘:1, ‘d‘:0}
#本意是遍历dict,发现元素的值是0的话,就删掉
>>> for k in d:
...   if d[k] == 0:
...     del(d[k])
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: dictionary changed size during iteration
#结果抛出异常了,两个0的元素,也只删掉一个。
>>> d
{‘a‘: 1, ‘c‘: 1, ‘d‘: 0}

>>> d = {‘a‘:1, ‘b‘:0, ‘c‘:1, ‘d‘:0}
#d.keys() 是一个下标的数组
>>> d.keys()
[‘a‘, ‘c‘, ‘b‘, ‘d‘]
#这样遍历,就没问题了,因为其实其实这里遍历的是d.keys()这个list常量。
>>> for k in d.keys():
...   if d[k] == 0:
...     del(d[k])
...
>>> d
{‘a‘: 1, ‘c‘: 1}
#结果也是对的
>>>

如果需要删除字典元素,一定要用.keys(),缺点是速度慢很多

时间: 2024-11-03 03:28:38

【python】dict的注意事项的相关文章

python dict 字典详解

和列表相同,字典也是许多数据的集合,属于可变序列类型.不同之处在于,它是无序的可变序列,其保存的内容是以“键值对”的形式存放的. 字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”. 字典类型很像学生时代常用的新华字典.我们知道,通过新华字典中的音节表,可以快速找到想要查找的汉字.其中,字典里的音节表就相当于字典类型中的键,而键对应的汉字则相当于值. 表 1 Python 字典特征 主要特征 解释 通过键而不是通过索引来读取元素 字

Python dict & set

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

Python Dict用法

Operation Result len(a) the number of items in a 得到字典中元素的个数 a[k] the item of a with key k 取得键K所对应的值 a[k] = v set a[k] to v 设定键k所对应的值成为v del a[k] remove a[k] from a 从字典中删除键为k的元素 a.clear() remove all items from a 清空整个字典 a.copy() a (shallow) copy of a 得

Python dict 以 1和True 作为键值的比较

运行环境: 操作系统:Win7 64位 Python版本: 2.7.12 IDE:pycharm 2017.2 测试代码: 测试Python dict 1 和 True 作为键值 测试 demo 如下: #!/usr/bin/env python# -*- coding:utf-8 -*- __author__ = "liukang" dict_test = {}print dict_testdict_test[1] = 1print dict_testdict_test[True]

python dict 排序

我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排.到底有多少种方法可以实现对dictionary的内容进行排序输出呢?下面摘取了 一些精彩的解决办法. python对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函数. sort函数和sorted函数唯一的不同是,sort是在容器内(in-place)排序,so

Python dict.has_key() 的说明

Python dict.has_key()方法仅限于Python 2.x使用,对于3.x,此方法已废除. 对于Python 2.x中的dict.has_key()方法,官方文档的说明如下:https://docs.python.org/2/library/stdtypes.html#mapping-types-dict 对于Python 3.x中的dict相关方法,官方文档的说明如下:https://docs.python.org/3.7/library/stdtypes.html#mappin

(翻译)如何对python dict 类型按键(keys)或值(values)排序

如何对dict类型按键(keys)排序(Python 2.4 或更高版本): mydict = {'carl':40, 'alan':2, 'bob':1, 'danny':3} for key in sorted(mydict.iterkeys()): print "%s: %s" % (key, mydict[key]) 结果: alan: 2 bob: 1 carl: 40 danny: 3 摘自 Python FAQ: http://www.python.org/doc/faq

python dict

#!/usr/bin/env python # --*-- encoding:utf-8 --*-- dicta = {'aaa':'bb','age':13} #索引 print(dicta['aaa']) #len print(len(dicta)) #for for i in dicta:#默认循环key print(i) for i in dicta.keys():#循环key print(i) for i in dicta.values():#循环value print(i) for

python dict{}和set([])

200 ? "200px" : this.width)!important;} --> 介绍 dict(dictionary),在其他语言中也称为map,使用键-值(key-value)存储.set和dict类似,也是一组key的集合,但不存储value.字典和set的key都是不允许重复且key不能是列表. 一.dict(字典的缩写) 字典和前面讲的list(列表)很相似,但是list不存在value,同时字典也和xml.json很像.字典使用一对大括号表示 1.创建字典表 创