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)

猜你喜欢

转载自blog.csdn.net/scyllake/article/details/95667053