python编程字典数据库_python基础数据类型之字典、集合

哈啰!大家好,今天是初五了,牛年接财神的好日子,懂得都懂。祝@所有人2021年,事事顺利,牛气冲天,福利满满,财运亨通,步步高升,学业进步!

那么,这次介绍的是鼎鼎大名的字典,其以其操作的灵活性、操作的复杂度接近于列表而广受欢迎,其应用在诸如学生档案管理、json数据库、Vscode代码idle应用的配置文件里等一些应用场景里,其应用范围非常广。

首先,来说下,字典的定义:英文全称dictionary,简写为dict,是一种可变的无序2集合,同时是一种以键值对的形式作为元素存储各种数据类型的集合。使用花括号'{}'来创建一个字典。注意哦,是成对出现,不能拆开啊!

同时,我也说下集合,既然提到是归于集合了,那么顺带就介绍下。集合,我们在学生时代就学习过了,现在在回顾下, 集合的定义。

定义:由不同元素组成的集合,集合是一组无序排列 可hash值,可作为字典的key。

特性:集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算,无须纠结于集

合中的单个值。

特点:1、不同元素组成  2、无序    3、集合中的元素必须是不可变类型

好,这样大家应该能够理解一些了吧。按照惯例,来说下其基本使用方法:

1.字典的创建

names = {}                   # 创建了一个空字典

d1 = {'Tony':29,'Pety':25}   # 创建了两个由姓名:年龄键值对组成的字典

d2 = {'Kate':18}             # 创建了一个元素的字典

print(type(d1))

print(len(d1))

>>>

2

2.字典中对键值对的设置要求

那么,首先来看对键的要求:

a) 唯一性: 一个字典对象里所有的键必须唯一,顾名思义,就是不能重复。一般而言,键是由一对单引号括起来的字符串组成,当然也可以是数字

来看下具体的例子:

d3 = {1:'sheep',2:'tiger',3:'lion',3:'lion'}

print(len(d3))

>>>3

print(d3)

>>> {1: 'sheep', 2: 'tiger', 3: 'lion'}

d4 = {1:'sheep',2:'tiger',3:'lion',3:'elephant'}

print(d4)

>>> {1: 'sheep', 2: 'tiger', 3: 'elephant'}

由此可见,虽然允许在创建字典的时候输入重复的内容,但实际调用时却只会保留最后一个键相同的元素,对于python3.x版本而言,希望各位在创建字典时养成一个检查键值对是否唯一的好习惯,以免代码的运行结果和预期的差异。

b)不可变性

由于键名是唯一的,一旦创建就不能修改但是更改键对应的值是被允许的。并且值可以支持python的任何对象。

例如 d5 = {6:'m',7:[1,2,3],8:{'a':'abc'}}

3.字典的自带的基本方法:

方法                  功能描述

clean                字典清空

copy                 复制并生成另外一个字典

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

get                    根据指定键,返回对应值,当访问的键不存在时,返回None

items                以元组数组的形式返回字典中的元素

keys                 返回键的类似列表的形式

pop                  删除指定键的元素,并返回指定键对应的值

popitem          随机返回元素,并删除元素

setdefault           当字典中键不存在时,设置键值对;  当字典中键存在时,获取键对应的值

update               利用一个字典更新另外一个字典

values               返回值的类似列表的形式

字典内部是由哈希表构成的,并且是无序的,所以没有提供sort方法,而列表、元组是有序列表,注意他们之间的区别。

下面会拿其中几个方法来介绍具体使用

4.字典元素的增加

d1= {'Tony':23,'Jack':18}

d1['Kate'] = 20

print(d1)

>>> {'Tony': 23, 'Jack': 18, 'Kate': 20}

上述操作中当对应的键不存在字典中时,会创建这个键值对,否则会修改键对应的值。

5.利用setdefault()方法给字典增加元素

使用格式为字典名.setdefault(k[,d]),其中k为字典新增的键,d为新增键对应的值。如果不提供d的值,则默认为None。

d1 = {'Tony': 23, 'Jack': 18, 'Kate': 20}

d1.setdefault('Alex',25)

print(d1)

d2 = d1.setdefault('Helen')

print(d2)

>>>{'Tony': 23, 'Jack': 18, 'Kate': 20, 'Alex': 25}

None

6.字典值的查询

a) 利用字典名[键名]查询

colors = {'red':(255,0,0),'green':(0,255,0),'blue':(0,0,255)}

colors['red']

>>> (255, 0, 0)

# 如果访问的键不存在,则会报错

KeyError

Traceback (most recent call last)

in

----> 1 colors['yellow']

KeyError: 'yellow'

b)利用 字典名.get(k)方法查询,k含义为要查询的键

colors = {'red':(255,0,0),'green':(0,255,0),'blue':(0,0,255)}

colors.get('red')

>>> (255, 0, 0)

如果同样访问一个不存在的键,会是什么结果呢?

colors.get('yellow')

>>>

咦,是啥都没有,返回了空值。这样在实际代码开发中会更加合乎业务的需要。

7.字典中值的修改

a)利用赋值语句修改键对应的值

d5 = {'Tony': 23, 'Jack': 18, 'Kate': 20, 'Alex': 25}

d5['Tony'] = 22

print(d5)

>>> {'Tony': 22, 'Jack': 18, 'Kate': 20, 'Alex': 25}

b)利用字典1.update(字典2)

其作用是用字典2里面的元素,更新字典1里面的元素,若字典2里面的某个键在字典1里面存在,则用字典2里的键修改字典1里同名键的值,若不存在,则会将余下的键值对作为新增键值对,对字典1进行更新。这个说法有点绕,但是用一个示例来解释应该会比较清楚。

d5 = {'Tony': 23, 'Jack': 18, 'Kate': 20, 'Alex': 25}

d6=  {'Tom': 18, 'Kate': 28, 'Alice': 26}

d5.update(d6)

print(d5)

>>> {'Tony': 23, 'Jack': 18, 'Kate': 28, 'Alex': 25, 'Tom': 18, 'Alice': 26}

字典的增、改、查都介绍了,那么下面介绍下删除方法吧。

8.字典元素的删除

在我们的代码开发中,对于不需要的字典元素,可以通过代码来从内存中删除。

a)利用del()方法删除

d6 = {'Tony': 23, 'Jack': 18, 'Kate': 28, 'Alex': 25, 'Tom': 18, 'Alice': 26}

del(d6['Jack'])

print(d6)

>>> {'Tony': 23,  'Kate': 28, 'Alex': 25, 'Tom': 18, 'Alice': 26}

b) 利用pop()方法删除

d7 = d6.pop('Kate')

print(d7)

>>> 28

c)利用字典.popitem()方法删除

d6 = {'Tony': 23, 'Jack': 18, 'Kate': 28, 'Alex': 25, 'Tom': 18, 'Alice': 26}

k1,v1 = d6.popitem()

print(k1,v1)

>>>Alice 26           # 虽然不带括号,其实是以元组的形式返回结果的

('Tom', 18).

d) 利用字典.clear()方法删除

d6.clear()

print(d6)

>>> {}

返回的结果是一个空字典,也就是删除了字典的全部元素,字典还是可以调用的。

9.其他的一些方法

a)in 成员操作

d6 = {'Tony': 23, 'Jack': 18, 'Kate': 28, 'Alex': 25, 'Tom': 18, 'Alice': 26}

'Tony'  in  d6.keys()

>>> True

'Tim'  in  d6.keys()

>>> False

存在就返回结果True ,否则是False

b) copy()方法

d6 = {'Tony': 23, 'Jack': 18, 'Kate': 28, 'Alex': 25, 'Tom': 18, 'Alice': 26}

d7= d6.copy()

print(id(d6)).  >>> 4391501760

print(id(d7)).  >>> 4392082496

d8 = d6

print(id(d8)).   >>> 4391501760

这里通过copy ()方法的复制,d7的内存地址明显和d6的内存地址不同,而d8是直接通过d6赋值的方法生成的,其内存地址和d6相同

d6['Tony']= 20

print(d6)    >>>{'Tony': 20, 'Jack': 18, 'Kate': 28, 'Alex': 25, 'Tom': 18, 'Alice': 26}

print(d7)    >>>{'Tony': 23, 'Jack': 18, 'Kate': 28, 'Alex': 25, 'Tom': 18, 'Alice': 26}

print(d8)     >>>{'Tony': 20, 'Jack': 18, 'Kate': 28, 'Alex': 25, 'Tom': 18, 'Alice': 26}

通过d6的一个元素的修改操作,可以发现d6和d8字典中的元素同时发生了改变,而d7字典中的元素仍然没有变化。大家可以多加练习并观察它们的不同。

c)字典.fromkeys()方法

字典.fromkeys(iterable),其中iterable 代表列表对象。

d9 = {}

d10 = d9.fromkeys(['a','b','c'])

print(d10)

>>>     {'a': None, 'b': None, 'c': None}

不难发现,键是列表中的每个元素,而值是空的。那这个方法有什么特殊的用途呢?还真有,可以应用在一些特定的场景,例如在搭建大型商城时,商品初始化时就会用这个方法,只有商品名,而没有确定对应的价格。

好了,我也敲得好累,内容比较多。谢谢大家能坚持看到最后。

那么数据类型的内容就基本介绍完了,集合的具体差、并集,在基础部分不会涉及它的应用,所以会在以后项目实战的时候再拿出来具体讲解,抱歉。

下个内容将会是流程控制,敬请期待。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值