Python第六章 字典

字典的定义和访问

1、字典的定义和访问

字典就是键值对的集合。 定义集合要使用花括号{}

xName = { key:value,key:value }

xName我们自己定义

key可以是数字或者字符串类型(也可以是布尔类型)

value可以是任意类型的数据

代码段1:

# 字典的定义:键值对

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

# 字典的使用

print(stu['name'])

print(stu['age'])

print(stu['gender'])

运行结果:

马瑞鹏

20

2、字典数据的添加、删除、修改和字典列表的区别

访问数据stu1[‘name’]

添加键值对

创建空字典

修改值

删除键值对 del()  del

代码段2:

# 字典的定义:键值对

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

# 字典的添加(添加rank,排名是1)

stu['rank'] = 1

print(stu)

# 修改年龄

stu['age'] = 18

print(stu)

del stu['age']

print(stu)

运行结果:

{'name': '马瑞鹏', 'age': 20, 'gender': '男', 'rank': 1}

{'name': '马瑞鹏', 'age': 18, 'gender': '男', 'rank': 1}

{'name': '马瑞鹏', 'gender': '男', 'rank': 1}

字典和列表的区别:

1、列表是通过自动的索引来访问的;字典是通过自己定义的key键来访问的

2、列表里面的数据是有序的,它的顺序决定了访问它的索引;字典里面的键值对是无序的,是通过自定义的key来访问的(键不能重复,重复会被覆盖)

有序和无序不单体现在定义的时候,也体现在存储在计算机内存上

3、一行定义和多行定义

代码段1:

# 字典的定义可以多行

stu = {'name':'马瑞鹏',

       'age':20,

       'gender':'男'}

# 字典的添加(添加rank,排名是1)

print(stu)

运行结果:{'name': '马瑞鹏', 'age': 20, 'gender': '男'}

代码段2:

l1 = ['Maruipeng','chenyijie','zhangwanjing']

l2 = ['Maruipeng','chenyijie','zhangwanjing',

      'Maruipeng','chenyijie','zhangwanjing'

      'Maruipeng','chenyijie','zhangwanjing'

      'Maruipeng','chenyijie','zhangwanjing']

print(l1)

print(l2)

运行结果:

['Maruipeng', 'chenyijie', 'zhangwanjing']

['Maruipeng', 'chenyijie', 'zhangwanjing', 'Maruipeng', 'chenyijie', 'zhangwanjingMaruipeng', 'chenyijie', 'zhangwanjingMaruipeng', 'chenyijie', 'zhangwanjing']

代码段3:

# String类型如果要多行注释需要加\

str = "ssbsbjskAJBSJKAAAAAAAAAAAAAAAAAAAA" \

      "SBJAKSBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \

      "BSJKKKKKKKK" \

      "BSJKKKKKKKKK"

print(str)

运行结果:

ssbsbjskAJBSJKAAAAAAAAAAAAAAAAAAAASBJAKSBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBSJKKKKKKKKBSJKKKKKKKKK

列表和字典嵌套使用

嵌套使用:

列表的元素可以是某个字典,字典的键值对中的值可以是一个列表

列表里面嵌套字典:

# 列表的定义可以多行

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

students = [{'name':'马瑞鹏','age':20,'gender':'男'},

            {'name':'孙畅煊','age':20,'gender':'男'},

            {'name': '陈奕洁', 'age': 20, 'gender': '女'},

            {'name': '张宛靖', 'age': 20, 'gender': '女'}

            ]

print(students[1])

print(students[1]['age'])

print(students[2]['gender'])

运行结果:

{'name': '孙畅煊', 'age': 20, 'gender': '男'}

20

字典中嵌套列表:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

stu1 = {'name':"陈龑",'age':19,'gender':'男','hobby':["小米","华为","苹果"]}

students = [{'name':'马瑞鹏','age':20,'gender':'男'},

            {'name':'孙畅煊','age':20,'gender':'男'},

            {'name': '陈奕洁', 'age': 20, 'gender': '女'},

            {'name': '张宛靖', 'age': 20, 'gender': '女'},

            stu1]

print(stu1)

print(students[4])

print(students[4]['hobby'])

运行结果:

{'name': '陈龑', 'age': 19, 'gender': '男', 'hobby': ['小米', '华为', '苹果']}

{'name': '陈龑', 'age': 19, 'gender': '男', 'hobby': ['小米', '华为', '苹果']}

['小米', '华为', '苹果']

5、如何判断两个字典是否相等

可以通过==判断两个列表或者两个字典里面的内容是否是相同的,列表比较内容及顺序,字典只比较键值对的内容是否一致,不比较顺序

代码段1:

l1 = ["Zhangsan","MaRuipeng"]

l2 = ["MaRuipeng","Zhangsan"]

l3 = ["MaRuipeng","Zhangsan"]

print(l1 == l2)

print(l2==l3)

运行结果:

False

True

代码段2:

d1 ={'stu1':"马瑞鹏","stu2":"张宛靖","stu3":"陈奕洁"}

d2 ={"stu2":"张宛靖",'stu1':"马瑞鹏","stu3":"陈奕洁"}

print(d1==d2)

运行结果:

True

注意:字典里面的键可以是数字

代码段3:

d1 ={1:"马瑞鹏",2:"张宛靖",3:"陈奕洁"}

print(d1)

运行结果:

{1: '马瑞鹏', 2: '张宛靖', 3: '陈奕洁'}

注意:不能访问不存在的键

代码段4:

d1 ={1:"马瑞鹏",2:"张宛靖",3:"陈奕洁"}

print(d1[1])

运行结果:马瑞鹏

练习:创建一个字典存储朋友的生日,方便通过朋友的名字 访问到朋友的生日

代码段5:

# 创建一个字典存储朋友的生日,方便通过朋友的名字 访问到朋友的生日

birthdaies = {'mrp':'9月29日',"zhj":"5月13日"}

print(birthdaies['mrp'])

print(birthdaies['zhj'])

运行结果:

9月29日

5月13日

6、使用keys和values取得键集合和值集合

字典的一些方法:

1、keys() 返回所有键的集合(不是列表类型,不用管什么类型,可以通过for遍历)

2、values()返回所有值的集合

3、items() 返回所有键值对的集合(这里的键值对使用元组数据类型)

代码段1:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

for k in stu.keys():

    print(k)

for v in stu.values():

    print(v)

keys = list(stu.keys())

values = list(stu.values())

print(keys)

print(values)

运行结果:

name

age

gender

马瑞鹏

20

['name', 'age', 'gender']

['马瑞鹏', 20, '男']

可以通过list()方法把上面的集合转成真正的列表 (在range的时候用过)

list(d.keys())

list(d.values())

list(d.items())

代码段4:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

print(stu.items())

运行结果:

dict_items([('name', '马瑞鹏'), ('age', 20), ('gender', '男')])

7、遍历字典的两种方法

1、for i in d.items():

i[0] i[1]

代码段1:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

for i in stu.items():

    print(i)

    print(i[0],i[1])

运行结果:

('name', '马瑞鹏')

name 马瑞鹏

('age', 20)

age 20

('gender', '男')

gender 男

代码段2:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

items = list(stu.items())

print(items)

运行结果:

[('name', '马瑞鹏'), ('age', 20), ('gender', '男')]

2、for k,v in d.items() :

k,v

代码段2:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

for k,v in stu.items():

    print(k)

    print(v)

运行结果:

name

马瑞鹏

age

20

gender

8、判断键是否存在和设置键的默认值

检查字典中是否存在值或者键使用in或者not in,当不指定keys和values的时候默认是检查键集合。

代码段1:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

res = 'gender' not in stu.keys()

print(res)

res2 = '马瑞鹏' in stu.values()

print(res2)

# 默认判断键

res3 = 'gender' in stu

print(res3)

res4 = '马瑞鹏' in stu

print(res4)

运行结果:

False

True

True

False

使用get取得值,防止报错。

d.get(key,defaultValue)

 

设置默认值:d.setdefault(key,value)

如果key不存在,就添加key-value键值对,如果存在,不做任何事情

代码段2:

stu = {'name':'马瑞鹏','age':20,'gender':'男'}

stu.setdefault("name","马瑞杰")

stu.setdefault("hobby",'英语、游泳')

print(stu['name']+"的爱好是:"+stu['hobby'])

练习题

  1. 创建一个包含多个键值对的字典
  2. 遍历打印出所有的键key
  3. 遍历打印出所有的值value
  4. 遍历打印所有的键值对
  5. 删除某一个键值对

代码:

# 1、创建一个包含多个键值对的字典

course = {'数据结构':"史蕊",'计算机网络':"刘景森",'计算机组成原理':"袁泉"}

# 2、遍历打印出所有的键key

for k in course.keys():

    print(k)

# 3、遍历打印出所有的值value

for v in course.values():

    print(v)

# 4、遍历打印所有的键值对

for k,v in course.items():

    print("教"+k+"的老师是"+v)

# 5、删除某一个键值对

del course['计算机组成原理']

print(course)

运行结果:

数据结构

计算机网络

计算机组成原理

史蕊

刘景森

袁泉

教数据结构的老师是史蕊

教计算机网络的老师是刘景森

教计算机组成原理的老师是袁泉

{'数据结构': '史蕊', '计算机网络': '刘景森'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值