python3.7从零开始学【第五章(字典)】

5.1字典作用:可以轻松查到某个特定的键,从而通过键找到对应的值。

     键和字典区别:

        键是唯一的,不可变的,可以是字符串,元组,数字,不能是list列表。

        值是可变的,不是唯一的,值可以是任何数据类型。

5.2创建和使用字典

5.2.1dict函数(可以使用dict函数将序列映射为字典。)

(dict函数可以利用关键字参数创建字典。)

 5.2.2字典的基本操作

1.修改字典

2.删除字典元素(del命令)

3.键的特性

(1)不允许同一个键出现两次。若出现两次相同的键后一个值会被记住。

(2) 键必须不可变,可以用数字,字符串或元组充当,不能用列表,否则会提示类型错误。

4.len函数(用于计算字典元素的个数,即键的总数。)

5.type函数(返回输入的变量类型。)

5.2.3字典的格式化字符串(在每个转换说明符中的%字符后加上用()括起来的键,再跟上其他说明元素。)

5.2.4字典和列表的区别

list:1:查找和插入的时间随着元素的增加而增加。

        2:占用空间小,浪费内存小。

字典:1:查找和插入的速度极快,不会随着key的增加而变慢。

           2:需要占用大量内存,内存浪费多。

,,,所以,dict是用空间换取时间,dict适用于高速查找。dict内部存放的顺序和键放入的顺序没有关系。 

5.3字典方法

5.3.1clear()方法(用于删除字典内的所有项。)

例子: 

5.3.2copy()方法(返回一个具有相同键/值对的新字典,将字典复制给另一个变量。)

student={'小萌':'1001','小智':'1002','小强':'1003','小张':'1006'}
st=student.copy()
st['小智']='2003'
print('复制后的st:',st)
print('原始字典:',student)



复制后的st: {'小萌': '1001', '小智': '2003', '小强': '1003', '小张': '1006'}
原始字典: {'小萌': '1001', '小智': '1002', '小强': '1003', '小张': '1006'}

copy()是属于浅复制,不改变原来的原始字典,。

5.3.3fromkeys()方法(用于创建一个新字典。)

   fromkeys()方法使用给定的键建立新字典,每个键默认对应的值为None.

dict.fromkeys(seq[,value])

dict:字典

seq:字典键值列表

value:可选参数

seq=('name','age','sex')
info=dict.fromkeys(seq)
print('新的字典为:%s'%info)

info=dict.fromkeys(seq,10)
print('新的字典为:%s'%info)




结果:
新的字典为:{'name': None, 'age': None, 'sex': None}
新的字典为:{'name': 10, 'age': 10, 'sex': 10}

5.3.4get()方法

     get()方法 返回指定键的值,如果值不在字典中,就返回默认值。

语法:dict.get(key,default=None) 

    dict:字典;key:字典中要查找的键;default:指定键的值不存在返回默认值。

student={'小萌':'1001','小智':'1002'}
print('小萌的学号为:%s'%student.get('小萌'))


结果:
小萌的学号为:1001

 实例:

>>>st={}
>>>print(st['name'])

结果:
Traceback (most recent call last):
  File "D:/pycharm/1.2.py", line 2, in <module>
    print(st['name'])
KeyError: 'name'



>>>st={}
>>>print(st.get('name'))

结果:
None




 以其他方法试图访问字典中不存在的项时会报错,到那时使用get()方法不会,会返回NONE.

st={}
print(st.get('name','未指定'))


结果:
未指定

5.3.5   key in dict方法

    in操作符用于判断键是否存在于字典中,如果健在字典中就返回true,不在返回false。

语法:key in dict

        dict:字典;key:字典中要查找的键。

student={'小萌':'1001','小智':'1002'}
print('小萌在student字典中:%s' % ('小萌' in student))


结果:
小萌在student字典中:True




student={'小萌':'1001','小智':'1002'}
print('小强在student字典中:%s' % ('小强' in student))

结果:
小强在student字典中:False

 5.3.6  item()方法

       以列表返回可遍历的(键/值)元组数组。

  语法:dict.items()

            dict:字典,该方法不需要参数。结果返回可遍历的元组数组。

student={'小萌':'1001','小智':'1002'}
print('调用items方法的结果:%s' % student.items())


结果:
调用items方法的结果:dict_items([('小萌', '1001'), ('小智', '1002')])

5.3.7   keys()方法

     以列表返回一个字典的所有键。返回值也是一个元组数组。,数组包括所有键。

  语法:   dict.keys()

     

student={'小萌':'1001','小智':'1002'}
print('字典中所有的键:%s' % student.keys())

结果:
字典中所有的键:dict_keys(['小萌', '小智'])

 5.3.8  setdefault()方法

    与get()方法类似,用于获得与给定键相关联的值,如果键不存在,就会添加键并将值设为默认值。

   语法:dict.setdefault(key,default=None)

       dict:字典;key:查找的键值;default:键不存在时设置的默认键值,该方法没有任何返回值。

student={'小萌':'1001','小智':'1002'}
print('小强的键值为:%s'% student.setdefault('小强'))

结果:
小强的键值为:None


student={'小萌':'1001','小智':'1002'}
print('小智的键值为:%s'% student.setdefault('小智'))

结果:
小智的键值为:1002



student={'小萌':'1001','小智':'1002'}
print('小强的键值为:%s'% student.setdefault('小强'))
print('student新键值为:%s'%student)

结果:
小强的键值为:None
student新键值为:{'小萌': '1001', '小智': '1002', '小强': None}

如果不适用默认值:

student={'小萌':'1001','小智':'1002'}
print('小zhang的键值为:%s'% student.setdefault('小zhang','1007'))

结果:
小zhang的键值为:1007

5.3.9  update()方法

   用于把字典dict2的键/值对更新到dict里。

语法:dict.update(dict2)

        dict:字典;dict2:代表要添加到dict中的字典;该方法没有任何返回值。

student={'小萌':'1002','小张':'1003'}
student1={'王浩':'3001','张吴':'5001'}
student.update(student1)
print('新字典为:%s' % student)


结果:
新字典为:{'小萌': '1002', '小张': '1003', '王浩': '3001', '张吴': '5001'}

student={'小萌':'1002','小张':'1003'}
student1={'王浩':'3001','张吴':'5001'}
student.update(student1)
print('新字典为:%s' % student)
student2={'小萌':'3333'}
student.update(student2)   #对相同项覆盖
print('新新字典为:%s' % student)


结果:
新字典为:{'小萌': '1002', '小张': '1003', '王浩': '3001', '张吴': '5001'}
新新字典为:{'小萌': '3333', '小张': '1003', '王浩': '3001', '张吴': '5001'}

5.3.10  values()方法

   以列表的形式返回字典中所有值。与返回键的列表不同,返回的列表中可以包含重复的元素。

语法:dict.values()

      dict:字典;该方法不需要参数,返回结是字典中的所有值。

student={'小萌':'1002','小张':'1003','小七':'3400'}
print('student字典中所有值为:%s'%list(student.values()))

结果:
student字典中所有值为:['1002', '1003', '3400']

#1.创建一个字典,并打印出字典内容。
student={'jack':'110','rose':'120','tom':'130'}
print('输出student字典:%s' % student)

#自定义一个字典,对字典中某一个值进行修改
student={'jack':'110','rose':'120','tom':'130'}
student['jack']='220'
print('修改后的字典:%s' % student)

#自定义一个字典,删除字典中某个元素,并修改另外某个元素
student={'jack':'110','rose':'120','tom':'130'}
del student['jack']
student['tom']='340'
print('修改后的字典:%s' % student)

#定义一个字典,打印出字典的长度,清空字典,再打印字典的长度;
dict={'jack':'1001','tom':'1002','rose':'1003','helen':'1004'}
print('字典的长度: %s' % len(dict))
dict.clear()
print('字典的长度:%s' % len(dict))

#定义一个字典,对字典进行浅拷贝和深拷贝,并对比两者异同。
dict={'jack':'1001','tom':'1002','rose':'1003','helen':'1004'}
st=dict.copy()
print('浅拷贝:%s' % st)

#定义一个字典,打印其中的某个元素。
dict={'jack':'1001','tom':'1002','rose':'1003','helen':'1004'}
dict.get('helen')
print(dict.get('helen'))

#定义一个字典,对字典进行便利,打印对应的key,value值。
dict={'jack':'1001','tom':'1002','rose':'1003','helen':'1004'}
print(dict)
print('遍历结果:%s' % dict.items())

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值