python 基础知识第8讲:序列之字典

1.字典

字典属于一个新的数据结构,称之为映射
字典也称之为 键值对(key - value)结构 ,每个键值对称之为一项(item)
作用:和列表相似,都是用来存储对象的容器

  • 列表的存储性能很好,但是读取的性能会差
  • 字典当中每一个元素都有一个名字,通过这个唯一的名字,可以快速的查找自己想要的元素,字典当中的key值相当于目录一样,value就是相应的内容

1.1字典的创建

语法: {key:value,key:value,key:value}

 d = {'name':'钢铁侠','age':30,'sex':'男'}
print(d,type(d)) # dict
注:
  • 字典的键(key)可以是任意不可变对象(如 int,str,bool,tuple ...等 )
  • 字典的值(value)可以是任意对象
  • 字典当中的键是不可以重复的,如果重复,后面的会替换前面的,
    如下代码:
 d = {'name':'钢铁侠','age':30,'sex':'男','name':'蜘蛛侠'}

1.2获取字典当中的值 根据键来获取

  • 语法 d[key]
print(d['name'])  #默认通过这种方式来获取
  • 但是有的情况下是可以不用加 ''号,就是将key 赋值给一个变量,然后再正常调取的时候,key的位置填写这个变量
x = 'age'
print(d[x])  
  • 通过 get()方法获取,此种方法,可以实现当输入的键不存在时,程序不会报错,而是返回 None
print(d.get('hello'))  #程序返回None不会像上面那样程序报错
  • get(key[, default])
    这个里面我们可以设定一个当程序没有相应的key相对应值的时候,返回一个我们自定义 的信息,也就是default的值我们可以自己写

1.3字典的值的使用

通过官方文档来获取字典的一些使用方法

  • 1.使用 dict()函数来创建字典
d = dict(name='蜘蛛侠',age=20,sex='男')
  • 2.通过双值子序列转换成为字典
双值序列,序列当中只有2个值 [1,2] ('b',6) 'de'
子序列 如果序列当中的元素也是序列,那么我们就称之为这个元素的子序列,例如: [(2,3),(7,8)]
d = dict([('name','钢铁侠'),('age',18)])  #双值序列,里面可以用元组的形式来形成,key和value
  • 3.获取字典当中的长度
    len()
print(len(d))
  • 4.in 和 not in
    in 检查字典当中是否包含指定的键
    not in 检查字典当中是否不包含指定的键
    print('name' in d )
  • 5 修改字典
    d[key] = value
    如果Key值存在覆盖,不存在就添加
  • 6 setdefault(key[, default])
    就是向字典中添加key-value
如果Key已经存在字典中,则返回key的值,不会对字典做任何操作
如果Key不存在,则向字典中添加这个Key,并设置value
result= d.setdefault('name','葫芦娃')
result= d.setdefault('python','葫芦娃')
  • 7 update() 添加
    将其他字典当中的key-value 添加到当前字典当中
    如果有重复的key,则后边的会替换到前面的
d = {'a':1,'b':2,'c':3}
d2 = {'d':4,'e':5,'f':6}
d.update(d2)
  • 8 del 删除
del d['a']
    1. popitem()
      随机删除字典中的一个键值对,一般都会删除最后一个键值对
d.popitem() #{'c': 3, 'd': 4, 'e': 5}

删除之后他会将删除的key-value 作为返回值返回
返回值是一个元组,元组中有2个元素 第一个是删除的Key 第二个是删除的value

result = d.popitem() # {'c': 3, 'd': 4}
print(result)
  • 10 clear() 清空字典
d.clear()
  • 11 copy() 复制
    该方法是用来对字典进行一个㳀复制
  • 复制以后的对象 和原对象就是对立 修改一个不会影响第二个
d = {'a':1,'b':2,'c':3}
d2 =d.copy()
d['a'] = 88
print(d,d2)
  • 㳀复制会简单复制对象内部的值,如果这值也是一个可变对象,这个可变对象是不会被复制的,也就是一个字典当中有一个子字典,复制的话只会复制外层的,内层的不会被复制,通过复制的字典修改内层字典中的元素的值,原来字典内层字典当中的值也会被改
d = {'a':{'name':'钢铁侠','age':30},'b':2,'c':3}
d2 =d.copy()
d2['a']['name']='zzx'
print(d,d2)
#{'a': {'name': 'zzx', 'age': 30}, 'b': 2, 'c': 3}
#{'a': {'name': 'zzx', 'age': 30}, 'b': 8, 'c': 3}
  • 12 字典的遍历
  • keys()
# 通过遍历keys()来获取所有的键
d = {'name':'钢铁侠','age':30,'sex':'男'}
for k in d.keys():
     print(k,d[k])
  • values()
    基本不用,因为看不到key
for v in d.values():
print(v)
  • items()
    该方法会返回字典中所有的项
    它会返回一个序列,序列包含有双值子序列
    双值分别是 字典中的 key 和 value
print(d.items())
for k,v in d.items():
    print(k,'=',v)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,380评论 0 5
  • Python标识符 在 Python 里,标识符有字母、数字、下划线组成。在 Python 中,所有标识符可以包括...
    tianyi6677阅读 1,086评论 0 3
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,737评论 0 10
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,094评论 1 32
  • 小兰坐在颠簸的公交车里,趴在前一个座位的靠背上,眼神痴呆呆的望着窗外,外头天气阳光明媚,路人也都很开心的走着,唯独...
    心恩丶惠动阅读 160评论 0 0