【Python语言基础】09、字典

1. 字典简介

字典(dict)属于一种新的数据结构,称为映射(mapping)。

  • 字典的作用和列表类似,但是查询性能比列表好;
  • 在字典中每个元素都有一个唯一的名字(key),可以通过这个名字进行快速查找指定元素(value),字典也称为键值对(key-value)结构;
  • 字典中可以有多个键值对,每个键值对称为一项(item)

2. 字典的使用

2.1 字典创建

  • 使用 {[key:value,key:value]} 来创建字典,key,value不传时创建的是空字典
d = {} # 创建空字典

print(d,type(d))

# 结果:
{} <class 'dict'>

***Repl Closed***
  • 字典的键可以是任意的不可变对象(int、str、bool、tuple…)
  • 字典的键不能重复,如果重复,后面出现的会替换掉前面的
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}

print(d)

# 结果:
{'sort': 1, 'name': '李四', 'age': 25, 'sex': 'male'}

***Repl Closed***
  • 使用dict()函数创建字典
    这种方式创建的字典,key都是字符串
d = dict(sort = 1,name = '张三',age = 25)
print(d)

# 结果:
{'sort': 1, 'name': '张三', 'age': 25}

***Repl Closed***
  • 将一个包含双值子序列的序列转换为字典
    双值序列指的值序列中有且只有两个元素
d = dict([('sort',1),('name','张三'),('age',25)])
print(d)

# 结果:
{'sort': 1, 'name': '张三', 'age': 25}

***Repl Closed***

2.2 字典值获取

  • 通过 d[key] 的方式获取值
    如果key不存在,则会报 KeyError的错
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}

# 根据key获取值
print(d['sort'])
print(d['name'])
print(d['age'])
print(d['sex'])

# 结果:
1
李四
25
male

***Repl Closed***

  • get(key[,default]) 根据键来获取字典中的值
    如果过去的键在字典中不存在,会返回None,如果default传递了值,key不存在时则返回设置的默认值
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}

print(d.get('age'))
print(d.get('add','默认值'))

# 结果:
25
默认值

***Repl Closed***

2.3 字典值修改

  • 语法:d[key] = value
    当key存在时,将key对应的值修改为value,如果key不存在,则直接在字典中增加
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}

d['name'] = '王五'
d['add'] = 'World'

print(d)

# 结果:
{'sort': 1, 'name': '王五', 'age': 25, 'sex': 'male', 'add': 'World'}

***Repl Closed***
  • setdefault(key[,default]) 向字典中添加key-value,这个方法有返回值
    如果key已经存在字典中,则返回key的值,不对字典进行任何操作
    如果key不存在,则向字典中添加这个key,并设置value
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}

result = d.setdefault('name','赵六')
print(result)

result = d.setdefault('add','world')
print(result)
print(d)

# 结果:
李四
world
{'sort': 1, 'name': '李四', 'age': 25, 'sex': 'male', 'add': 'world'}

***Repl Closed***
  • update([other]) 将其它字典中的key-value添加到当前字典中
    注意: 如果两个字典中存在相同key,那么值会被替换
a = {'id':1,'name':'Mike','score':100}
a_2 = {'time':'2025-03','user':'Json'}

a.update(a_2)
print('输出a:',a)

# 相同 key会被替换
d = {'sort':1,'name':'张三','age':25,'sex':'male'}
d_2 = {'sort':2,'name':'王五','age':26,'sex':'male'}

d.update(d_2)
print('输出d:',d)

# 结果:
输出a: {'id': 1, 'name': 'Mike', 'score': 100, 'time': '2025-03', 'user': 'Json'}
输出d: {'sort': 2, 'name': '王五', 'age': 26, 'sex': 'male'}

***Repl Closed***

2.4 字典的删除

  • 使用del d[key] 删除字典中key-value
    key不存在时会报错
d = {'sort':1,'name':'张三','age':25,'sex':'male'}

del d['sort']
print('输出d:',d)

# 结果
输出d: {'name': '张三', 'age': 25, 'sex': 'male'}

***Repl Closed***
  • popitem() 随机删除字典中一个键值对,一般都是删除最后一个键值对
  1. 这个方法有返回值,会将删除的key-value作为一个元组返回
  2. 如果字典为空时调用,会报错
d = {'sort':1,'name':'张三','age':25,'sex':'male'}

d.popitem()
print('输出d:',d)

# 结果
输出d: {'sort': 1, 'name': '张三', 'age': 25}

***Repl Closed***
  • pop(key[,default]) 根据key 删除字典中的项
  1. 这个方法有返回值,会将被删除的值返回
  2. 如果key不存在字典中,会报错,如果指定了默认值,key不存在时会返回默认值
d = {'sort':1,'name':'张三','age':25,'sex':'male'}

res = d.pop('sort')
res_add =  d.pop('add','默认值')

print('输出d:',d)
print('输出res:',res)
print('输出res_add:',res_add)

# 结果:
输出d: {'name': '张三', 'age': 25, 'sex': 'male'}
输出res: 1
输出res_add: 默认值

***Repl Closed***
  • clear() 清空字典
d = {'sort':1,'name':'张三','age':25,'sex':'male'}

d.clear()
print('输出d:',d)

# 结果
输出d: {}

***Repl Closed***
  • copy() 用于对字典进行浅复制
  1. 复制出来的对象是独立的,修改一个不会影响另外一个
  2. 浅复制会简单的复制对象内部的值,如果字典中的值也是一个可变对象,这个可变对象不会被复制
d = {'sort':1,'name':'张三','age':25,'sex':'male'}
d_2 = d.copy()

print('输出d:',d,id(d))
print('输出d_2:',d_2,id(d_2))

# 结果
输出d: {'sort': 1, 'name': '张三', 'age': 25, 'sex': 'male'} 2576443365312
输出d_2: {'sort': 1, 'name': '张三', 'age': 25, 'sex': 'male'} 2576443758976

***Repl Closed***
  • len() 获取字典中键值对的个数
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}

print(len(d))

# 结果:
4

***Repl Closed***
  • in 和 not in 检查字典中是否包含指定的键
d = {
'sort':1,
'name':'张三',
'name':'李四',
'age':25,
'sex':'male',
}

print('字典中是否包含age:','age' in d)
print('字典中是否包含add:','add' in d)

# 结果
字典中是否包含age: True
字典中是否包含add: False

***Repl Closed***

3. 字典的遍历

  1. keys() 该方法会返回字典的所有key
    这个方法会返回一个序列,序列中会包含序列中所有的键
d = {'sort':1,'name':'张三','age':25,'sex':'male'}
d_keys = d.keys()

print('输出:',d_keys)

# 结果:
输出: dict_keys(['sort', 'name', 'age', 'sex'])

***Repl Closed***


# 遍历获取所有值
d = {'sort':1,'name':'张三','age':25,'sex':'male'}

for s in d.keys() : 
    print(d[s])

# 结果
1
张三
25
male

***Repl Closed***
  1. values() 该方法会返回字典的所有的值
# 遍历获取所有值
d = {'sort':1,'name':'张三','age':25,'sex':'male'}

for s in d.values() : 
    print(s)

# 结果
1
张三
25
male

***Repl Closed***
  1. items() 该方法会返回字典中的所有项,返回形式为序列,序列中包含双值子序列
d = {'sort':1,'name':'张三','age':25,'sex':'male'}

for s,v in d.items() : 
    print(s,':',v)

# 结果:
sort : 1
name : 张三
age : 25
sex : male

***Repl Closed***
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值