Python 第二章 字典

2.3 字典

1. 基本概念

字典:

  • 字典是由一系列键值对组成,可以是数字、字符串、列表等任何类型。
  • 字典中的键值对是无序的,都是随机排列。
  • 字典中的键(key)必须保证唯一,但是值(value)可以重复。
  • 键和值之间用逗号 ‘:’ 分隔开,而键值对之间用冒号 ‘,’ 分隔,整个字典被一对 ‘{}’ 包括起来。

2. 字典的创建、添加、删除、修改、查询
2.1 创建字典
     创建字典时我们可以先创建一个空字典,即使用一对空的花括号定义一个字典,然后再分行添加各个键值对。
例:

scores = {}           # 创建空字典
# scores = dict()     # 创建空字典

scores['语文'] = 89   # 向字典中添加键值对
scores['数学'] = 92
scores['英语'] = 96
print(scores)

输出:

{'语文': 89, '数学': 92, '英语': 96}

进程已结束,退出代码 0

2.2 添加键值对
例1:添加单个键值对

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
}
scores['政治'] = 92
print(scores)

输出:

{'语文': 89, '数学': 92, '英语': 96, '政治': 92}

进程已结束,退出代码 0

例2:添加多个,使用 a.update(b) 方法将另一个字典 b 中的内容添加到原字典 a 中,相同 key 值的内容 value 值被替换,其余内容添加。

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
}
score2 = {
    '政治': 95,
    '历史': 88,
    '英语': 92,
}
scores.update(score2)
print(scores)

输出:

{'语文': 89, '数学': 92, '英语': 92, '政治': 95, '历史': 88}

进程已结束,退出代码 0

例3:使用 a.setdefault() 函数向字典 a 中添加 key 值,如果 key 存在不做修改;如果 key 不存在,该方法会先为这个不存在的 key 设置一个默认的 value,然后再返回该 key 对应的 value

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
}
print(scores.setdefault('政治', 91))
print(scores)

输出:

91
{'语文': 89, '数学': 92, '英语': 96, '政治': 91}

进程已结束,退出代码 0

2.3 删除字典
     创建字典时我们可以先创建一个空字典,即使用一对空的花括号定义一个字典,然后再分行添加各个键值对。

  1. del a[ ] (使用 del 方法删除字典 a 中指定 key-value 对 )

例:

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
    '政治': 95,
}
del scores['语文']
print(scores)

输出:

{'数学': 92, '英语': 96, '政治': 95}

进程已结束,退出代码 0
  1. a.pop( )

     使用 pop( ) 方法删除字典 a 中指定 key 的 key-value 对;key 存在,则删除,并返回对应的 value;key 不存在,报错。

例:

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
    '政治': 95,
}
print(scores)
scores.pop('语文')
print(scores)
print(scores.pop('物理'))   # 原列表 key 值中没有物理,报错 KeyError 

输出:

Traceback (most recent call last):
{'语文': 89, '数学': 92, '英语': 96, '政治': 95}
  File "D:/PythonWorkSpace/Lianxi.py", line 195, in <module>
{'数学': 92, '英语': 96, '政治': 95}
    print(scores.pop('物理'))
KeyError: '物理'

进程已结束,退出代码 1
  1. a.clear( )
        用于清空字典中所有的 key-value 对,对一个字典执行 clear() 方法之后,该字典就会变成一个空字典。

例:

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
    '政治': 95,
}
scores.clear()
print(scores)

输出:

{}

进程已结束,退出代码 0
  1. a.popitem()
        删除字典 a 中最后一个 key-value。

例:

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
    '政治': 95,
}
print(scores.popitem())
print(scores)

输出:

('政治', 95)
{'语文': 89, '数学': 92, '英语': 96}

进程已结束,退出代码 0

    由于实际上 popitem 弹出的就是一个元组,因此程序完全可以通过序列解包的方式用两个变量分别接收 key 和 value

例:

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
    '政治': 95,
}
key, value = scores.popitem()
print(scores)
print(key, value)

输出:

{'语文': 89, '数学': 92, '英语': 96}
政治 95

进程已结束,退出代码 0

2.4 修改字典
    要修改字典中的值,可依次指明自点名、用方括号括起来的键以及与该键相关联的新值。

例:

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
    '政治': 95,
}
scores['语文'] = 90
print(scores)

输出:

{'语文': 90, '数学': 92, '英语': 96, '政治': 95}

进程已结束,退出代码 0

2.5 查询字典

例1:a.keys( ) 返回字典 a 中的所有 key 值。

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
    '政治': 95,
}
print(scores.keys())

输出:

dict_keys(['语文', '数学', '英语', '政治'])

进程已结束,退出代码 0

例2:a.values( ) 返回字典 a 中的所有 values 值。

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
    '政治': 95,
}
print(scores.values())

输出:

dict_values([89, 92, 96, 95])

进程已结束,退出代码 0

例3:a.items( ) 返回字典 a 中的所有 key-value。

scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
    '政治': 95,
}
print(scores.items())

输出:

dict_items([('语文', 89), ('数学', 92), ('英语', 96), ('政治', 95)])

进程已结束,退出代码 0

2.6 排序字典
    可以通过对字典的键或值进行排序来实现对整个字典的排序。
例:

scores = {
    'yuwen': 89,
    'shuxue': 92,
    'yingyu': 96,
    'zhengzhi': 95,
}
print('未排序:', scores)
print('已排序:', sorted(scores.keys()), [scores[i] for i in sorted(scores.keys())])  # 使用sorted()函数后为列表

输出:

未排序: {'yuwen': 89, 'shuxue': 92, 'yingyu': 96, 'zhengzhi': 95}
已排序: ['shuxue', 'yingyu', 'yuwen', 'zhengzhi'] [92, 96, 89, 95]

进程已结束,退出代码 0

3. 字典的特性

  1. 索引
        通过键 key 来索引出值 value。
    例:
scores = {
    '语文': 89,
    '数学': 92,
    '英语': 96,
    '政治': 95,
}
print(scores['语文'])

输出:

89

进程已结束,退出代码 0
  1. 嵌套
        有时候需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这成为嵌套。

例1:列表中嵌套字典

stu1 = {'name': 'xiaoming', 'sex': 'male', 'number': '01'}
stu2 = {'name': 'xiaogang', 'sex': 'male', 'number': '02'}
stu3 = {'name': 'xiaohong', 'sex': 'female', 'number': '03'}

students = [stu1, stu2, stu3]
for student in students:
    print(student)

输出:

{'name': 'xiaoming', 'sex': 'male', 'number': '01'}
{'name': 'xiaogang', 'sex': 'male', 'number': '02'}
{'name': 'xiaohong', 'sex': 'female', 'number': '03'}

进程已结束,退出代码 0

例2:字典中嵌套列表

student = {'name': 'xiaoming', 'sex': 'male', 'number': '01', 'choose_class': ['高数', '英语', '大物']}
print(student['name'].title() + '的选课有:')
for stu in student['choose_class']:
    print(stu)

输出:

Xiaoming的选课有:
高数
英语
大物

进程已结束,退出代码 0

例3:字典中嵌套字典

students = {
    'stu1': {'name': 'xiaoming', 'sex': 'male', 'number': '01', 'choose_class': '高数'},
    'stu2': {'name': 'xiaogang', 'sex': 'male', 'number': '02', 'choose_class': '英语'},
    'stu3': {'name': 'xiaohong', 'sex': 'female', 'number': '03', 'choose_class': '电路'},
}
for stu_name, stu_info in students.items():
    print(stu_name, stu_info)

输出:

stu1 {'name': 'xiaoming', 'sex': 'male', 'number': '01', 'choose_class': '高数'}
stu2 {'name': 'xiaogang', 'sex': 'male', 'number': '02', 'choose_class': '英语'}
stu3 {'name': 'xiaohong', 'sex': 'female', 'number': '03', 'choose_class': '电路'}

进程已结束,退出代码 0
  1. 成员赋操作
        判断某个值是否在字典的键 key 中,不能判断该值是否在值 value 中。

输入:

student = {'name': 'xiaoming', 'sex': 'male', 'number': '01', 'choose_class': '高数'}
print('name' in student)
print('高数' in student)

输出:

True
False

进程已结束,退出代码 0
  1. 迭代:for 循环
    输入:
student = {'name': 'xiaoming', 'sex': 'male', 'number': '01', 'choose_class': '高数'}
print('遍历 key :')  
for key in student:  # 遍历 key
    print(key)

print('\n遍历 value :')  
for value in student.values():  # 遍历 value
    print(value)

print('\n打印字典所有内容,包括key和value :')  
for key in student:                 # 打印字典所有内容,包括key和value
    print(key, student[key])

print('\n打印字典所有内容 :')
for key, value in student.items():  # 打印字典所有内容
    print(key, value)

输出:

遍历 key :
name
sex
number
choose_class

遍历 value :
xiaoming
male
01
高数

打印字典所有内容,包括key和value :
name xiaoming
sex male
number 01
choose_class 高数

打印字典所有内容 :
name xiaoming
sex male
number 01
choose_class 高数

进程已结束,退出代码 0
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值