Python基础--字典的操作

一、数据类型划分

1)不可变数据类型

不可变数据类型又称不可哈希
- 字符串
- 布尔值
- 数字
- 元祖

2)可变数据类型

可变数据类型又称可哈希
- 列表
- 字典
- 集合
字典的key必须是不可变数据类型

dic = {
    'name':['皮皮江','pipijiang'],
    'py':['num',{
        'avg_age':18,
    }],
    True:1,
    2:'hello',
    (1,2,3,4):'pyrookie'

}

二、字典的特征

1)优点

字典的Key在内部转换为数字,在查询时使用二分查找,查找的速度最快

2)数据存储

字典可以存储大量的关系型数据

三、字典的增删改查

dic1 = {
    'age':18,
    'name':'pipijiang',
    'sex':'male'
}

1)增加

1、dict[‘键’] = 值

当要添加的键不存在时 添加
dic1['high'] = 180
print(dic1)

{'high': 180, 'age': 18, 'name': 'pipijiang', 'sex': 'male'}
当要添加的键存在时 覆盖
dic1['age'] = 16
print(dic1)

{'name': 'pipijiang', 'sex': 'male', 'age': 16}

1、D.setdefault(k[,d])

当要添加的K不存在时 添加
dic1.setdefault('weight',150)
print(dic1)

{'age': 18, 'name': 'pipijiang', 'sex': 'male', 'weight': 150}
当要添加的K存在时 不做任何处理
dic1.setdefault('name',"pyrookie")   
print(dic1)

{'age': 18, 'name': 'pipijiang', 'sex': 'male'}

2)删除

dic1 = {
    'age':18,
    'name':'pipijiang',
    'sex':'male'
}

1、按键名删除 D.pop(k[,d])

功能:按传入的值删除字典中的键值对,有返回值

1. 当删除的键值对存在时
print(dic1.pop('age'))
print(dic1)

{'name': 'pipijiang', 'sex': 'male'}
18
2. 当删除的键值对不存在时,返回pop中的第二个参数
print(dic1.pop('heigh','没有值'))
print(dic1)

没有值
{'age': 18, 'name': 'pipijiang', 'sex': 'male'}
3. 当删除的键值对不存在时,没有第二个参数

会报错

2、随机删除 D.popitem() -> (k, v)

功能:随机删除字典中的任意键值对,并返回所删除的键值对

print(dic1.popitem())  
print(dic1)

('sex', 'male')
{'age': 18, 'name': 'pipijiang'}

3、清空字典 D.clear() -> None

4、删除字典对象

del dic1

5、删除字典中的键值对

注意:如果删除的内容不存在会报错,一般不用

del dic1['age']

3)修改

dic1 = {
    'age':18,
    'name':'pipijiang',
    'sex':'male'
}

1、dic1[‘age’] = 20

功能:修改 或者 增加 键值对

2、更新 D.update([E, ]**F) -> None

功能:将参数中字典的键值对添加或覆盖到D字典中。

dic = {
    'name':'Rookie',
    'weight':68
}

dic1.update(dic)
print(dic1)

{'sex': 'male', 'name': 'Rookie', 'weight': 68, 'age': 20}

4)查询

dic1 = {
    'age':18,
    'name':'pipijiang',
    'sex':'male'
}

1、D.keys() -> a set-like object

返回一个类似列表的对象

print(dic1.keys())

['age', 'name', 'sex']

2、D.values()

返回一个类似列表的对象

print(dic1.values())

[18, 'pipijiang', 'male']

3、D.items()

返回一个类似列表中包含元祖的对象,每个元祖中包含键和值

print(dic1.items())

[('age', 18), ('name', 'pipijiang'), ('sex', 'male')]

4、遍历查询

for k,v in dic1.items():
    print(k,v)

sex male
age 18
name pipijiang

5、D[键名]

注意键名不存在时会报错

6、D.get(k[,d])

当k存在时返回k对应的value
dic1.get('name')

'pipijiang'
当k不存在时返回参数 d
dic1.get('heigh','没有这个')

'没有这个'

5)创建字典

1、直接创建

dic = {
    'name':'pyrookie',
    'age':'18',
}

2、dict.fromkeys() 方法

dic = dict.fromkeys([1,2,3],'张三')
dic[1] = '李四'
print(dic)

{1: '李四', 2: '张三', 3: '张三'}

四、关于字典的小知识点

1)字典不能再for循环中删除

字典在for in 循环中遍历时会报错

2)删除字典中的元素

1、删除字典中含有 ‘k’ 的键值对

方法一
思路:新建一个列表作为中间字典,将有没有k的加入到新字典中

dic = {'k1':'v1','k2':'v2','a3':'v3'}
dic1 = {}
for i in dic:
    if 'k' not in i:
        dic1[i] = dic[i]
dic = dic1
print(dic)

{'a3': 'v3'}

方法二
思路:将含有k的键加入到一个新列表中,再遍历列表,将键删除

dic = {'k1':'v1','k2':'v2','a3':'v3'}
li = []
for i in dic:
    if 'k' not in i:
        li.append(i)
for i in li:
    del dic[i]
print(dic)

{'a3': 'v3'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值