九、python基础:数据容器(字典的创建和相关操作)

九、python基础:数据容器(字典的创建和相关操作)

1、什么是字典

在python中,字典用英文dict表示,它用一个大括号包起来的,里面可以存放各种类型数据。但必须是以键值对的形式存在,键值对的个数没有限制,键值对之间使用逗号隔开,每个键值对中间都有一个冒号,冒号前面的是键key,冒号后面的是值value。

d = {'name':'xiaoming', 'skill': ['eat', 'run', 'study']}

像这个变量d,我们用一个字典赋值给它,字典中的“name”和“skill”就是它的键。“xiaoming”和列表[‘eat’, ‘run’, ‘study’]就是它的值。一个"name":‘xiaoming’,这样的组合就是一个键值对。

在字典中,键key和值value是成对出现的,有键就必须有值。
它通常用来表示一一对应的映射关系,这个怎么理解呢?举个例子
我们可以用一个字典来存放一个班级的学生信息

students = [
    {'name':'小明', 'phone': '156XXXXXX', '成绩': 90},
    {'name': '小红', 'phone': '185XXXXXXX', '成绩':95},
]

这样的结构其实是一个列表里面存放了2个字典,内部的每个字典都存放了一个学生的多个信息。

如果我们想要知道每个学生的姓名,我们只要把内部的每个字典都取出来,接着用键名"name"去从字典中取出值,就能知道对应学生的姓名是什么了。
演示一下:
在这里插入图片描述
这就是映射:只要使用’name’去取值,就一定能获取到对应一个姓名,用’phone’去取值,就一定能获取到对应的电话号码。

也是因此,在同一个字典中,键名是不能重复的。否则,你通过键名去取值的时候,解释器都不知道你要取的是哪一个。

并且你在定义的时候,如果有相同键名的,解释器只会使用最后一个键值对生成。
例如这个,字典中的2个键值对都使用了"name"作为键名,导致创建出来的字典,只有一个键值对。
在这里插入图片描述

2、字典的创建:

2.1、简单创建方法:
# 创建一个空字典,直接用大括号即可,也可以用内置方法dict()
d = {}
d = dict()
# 字典也可以存放各种类型的数据。
d = {'a': '1', 'b': '2', 'c': 1, 'd':1.2, 'e': (1, 2), 'f': [1, 2], 'g':{'a': '1'}}
2.2、较复杂的创建方法:
# 内置方法dict,搭配关键字参数创建
dict(a='a', b='b', t='t')
# 内置方法dict,搭配zip映射函数构建
dict(zip(['one', 'two', 'three'], [1, 2, 3]))
# 用可迭代对象创建,列表内嵌套元组
dict([('one', 1), ('two', 2), ('three', 3)])

演示结果:
在这里插入图片描述

2.3、自动批量创建(使用for循环结合占位符)
dict = {}
for i in range(5):
    dict['第%d个'%i] = i
print(dict)

演示结果:
在这里插入图片描述

3、字典的常用操作:

我们操作字典经常用到的就是取出某个键对应的值
使用中括号,你要去哪个键的值就写对应的键名:

d = {'name':'小明', 'age':12, 'skill': ['eat', 'run', 'study']}

# 取出字典d中的键名name对应的值
d['name']

还有其他用到比较多的操作是:
修改某个值,新增键值对,统计字典的键值对个数,取出字典所有键,取出字典所有值,取出字典所有键值对

d = {'name':'小明', 'age':12, 'skill': ['eat', 'run', 'study']}
# 修改某个值(把名字改成小红)
d['name'] = '小红'
# 新增键值对(加个电话号码)
d['phone'] = '156xxxxxxx'
# 统计字典的键值对个数
len(d)
# 取出字典所有键
d.keys()
# 取出字典所有值
d.values()
# 取出字典所有键值对
d.items()

演示结果:
在这里插入图片描述
在这里插入图片描述

4、一些不常用的操作函数和方法

min(d)     # 字典中键的最小值
max(d)     # 字典中键的最大值

d.get(key, default)    # 键存在则返回相应值,否则返回默认值
d.pop(key, default)    # 键存在则返回相应值,并且删除该键值对,否则返回默认值
d.popitem()    # 随机从字典中取出一个键值对,以元组形式返回
d.clear()    # 删除所有键值对
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值