前言:
此时各位老铁们对“pythonhaskey”大概比较重视,朋友们都需要分析一些“pythonhaskey”的相关内容。那么小编同时在网摘上搜集了一些有关“pythonhaskey””的相关文章,希望小伙伴们能喜欢,咱们一起来学习一下吧!Python里面有3大数据结构:列表,字典和集合。之前小会已经讲解了列表,今天来讲一下字典。
作为最常用的数据结构之一,里面有一些重要的技巧用法,小会把这些都整理到一起,希望能对你的编程功力大有帮助。
一、定义:
字典的每个值都具备自己独有的名称即键( key ),每个 key 都有对应的值( value ),字典中的 key 和 value 必须成对出现 。整个字典包括在花括号‘{ }’中,它的每个键值 ( key => value )对使用冒号( : )分割,每对值之间用逗号( , )分割。
定义如记录人员成绩的字典,如下:
d = {'Woodman': 95, 'Alan': 85, 'Bobo': 59}
我们把姓名 Woodman、Alan、Bobo 称为key,对应的成绩 95、85、59 称为value,dict 字典可以通过 key 来查找值,一个 key:value 算作一个值。
注意:dict字典用的键( key )必须是唯一的,但值则不必。一个字典中不能出现相同名称的键( key ),但值能相同,值可以是任何数据类型(字符串、数字、元组、列表、字典等)。
# 混合字典 key不重复,值可以是任意类型d = {'woodman': 98, 2.5: 'PM', 'Bobo': [89, 65, 34],'Mydict': {'Alan': 99}}
拓展:字典dict 的最大特点是查找速度快,无论 dict 有10个元素还是10万个元素,查找速度都一样。
二、字典的基本操作
1、如何访问字典中的值?
adict[key] 形式返回键key对应的值value,如果key不在字典中会引发一个KeyError。
2、如何检查key是否在字典中?
a、has_key()方法 形如:adict.haskey(‘name') 有–>True,无–>False
b、in 、not in 形如:'name' in adict 有–>True,无–>False
3、如何更新字典?
a、添加一个数据项(新元素)或键值对
adict[new_key] = value 形式添加一个项
b、更新一个数据项(元素)或键值对
adict[old_key] = new_value
c、删除一个数据项(元素)或键值对
del adict[key] 删除键key的项 / del adict 删除整个字典
adict.pop(key) 删除键key的项并返回key对应的 value值
三、字典的索引
dict1[key] #key是字典的键,返回的是对应的值valuedict1.get(key)#get方法获取键的值,若键不存在,则返回设定的默认值default(默认为None)--与`[key]`获取值的区别是,get方法遇到键不存在的时候会返回设定值,而直接索引遇到键不存在时会报错“missing-key”
四、字典遍历
1、遍历字典的key(键)
for key in adict.keys():print key
2、遍历字典的value(值)
for value in adict.values(): print value
3、遍历字典的项(元素)
for item in adict.items():print item
五、字典的排序
用万金油sorted()函数,举一个简单的例子
my_dict={"cc":100,"aa":200,"bb":10}print(sorted(my_dict.iteritems(),key=lambda x:x[0]))#表示按照key排序>>>[('aa', 200), ('bb', 10), ('cc', 100)]print(sorted(my_dict.iteritems(),key=lambda x:x[1]))#表示按照value排序>>>[('bb', 10), ('cc', 100), ('aa', 200)]
注意:原始的my_dict本身顺序并没有变(不信你可以print看看),排序是通过sorted()返回了一个新的字典。
另外一种做法,因为字典是无序,若你一开始设计的时候就希望这个数据结构,按照的添加的顺序进行有序排列(比如读取CSV文件),那么我们就是利用collection模块里面的OrderedDict()处理:
from collections import OrderedDictorderDict=OrderedDict()orderDict['a']=1orderDict['b']=2orderDict['c']=3print(orderDict)>>>OrderedDict([('a', 1), ('b', 2), ('c', 3)])
对比一下,若是普通的dict是乱序的,若不用OrderedDict()
orderDict=dict()orderDict['a']=1orderDict['b']=2orderDict['c']=3print(orderDict)>>>{'a': 1, 'c': 3, 'b': 2}
最后要提醒一下:OrderedDict()虽然是好东西,但是它内部维护了一个双向链表,若数据量很大的话,会非常消耗内存。
六、字典中提取部分子集
我们原来有一个长的字典,我们想提取其中一部分变成另外一个子集,我们怎么做呢,我们来看一个小例子:
students_score={'jack':80,'james':91,'leo':100,'sam':60}#提取分数超过90分的学生信息,并变成字典我们可以用字典推导式,轻松搞定good_score={name:score for name,score in students_score.items() if score>90}print(good_score)>>>{'james': 91, 'leo': 100}
七、总结
关于字典,记住以下几点:
1、字典的键值对是无序的( Python3.6 开始有序),值可修改,定义字典时键值( key=>value )必须成对出现;
2、字典的键(key)不可以重复,键重复时值以最后一个为准;
3、字典的键必须不可变,所以可以用数字,字符串或元组充当,而不能用列表;
4、不管字典的数据量有多大,他们的访问速度都是一样的。
好啦,今天的内容就是以上这些部分了,如果有兴趣学习Python的小伙伴,可以关注我们的免费课程《嘿有趣之Python快速入门》,点击下方了解更多即可查看。
标签: #pythonhaskey