欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Day10 字典详解——python学习之路

程序员文章站 2022-03-11 12:43:16
...

定义

使用 {} 定义

vardict = {'a':1, 'b':2, 'c':3}

使用 dict(key=value)函数 进行定义

vardict = dict(name='zhang', sex='男', age=22)

数据类型的转换(需要二级元组或二级列表)

vardict = dict([['a',1], ['b',2]])

zip压缩函数,dict转类型

var1 = [1,2,3,4]
var2 = ['a','b','c','d']
vardict = dict(zip(var1,var2))
print(vardict)      #(输出) {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

字典相关操作

获取元素 dict[key]

var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 获取
res = var1['a']

修改元素 dict[key] = value

var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 修改
var1['a'] = 111

删除元素 del dict[key]

var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 删除
del var1['a']

添加元素 dict[newkey] = value

var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 添加
var1['aa'] = 'AA'
print(var1)     #(输出) {'b': 2, 'c': 3, 'd': 4, 'aa': 'AA'}

成员检测,只能检测key,不能检测value

var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 检测是否存在
print('a' in var1)		#(输出) True

字典的遍历访问

  1. (推荐)遍历字典时, 使用 items() 函数, 可以遍历获取key和value
var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

for k,v in var1.items():
    print(f'{k}={v}',end=',')

#(输出) a=1 b=2 c=3 d=4 
  1. 在遍历当前的字典时,只能获取当前的key,再根据key获取对应的value
var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

for i in var1:
    print(var1[i], end=',')  # 通过字典的key获取对应value

#(输出) 1 2 3 4 
  1. 遍历字典所有的key
var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

for k in var1.keys():
    print(k, end=' ')

#(输出) a b c d 
  1. 遍历字典所有的value
var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

for v in var1.values():
    print(v, end=' ')

#(输出) 1 2 3 4 

字典的相关函数

len()

获取当前字典的长度, 只能检测当前有多少个键值对

var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

res = len(var1)
print(res)      #(输出) 4

keys()

获取当前字典中的所有key

var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

res = var1.keys()
print(res)      #(输出) dict_keys(['b', 'c', 'd', 'aa'])

values()

获取字典中所有的value

var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

res = var1.values()
print(res)      #(输出) dict_values([2, 3, 4, 'AA'])

items()

获取当前字典的长度, 只能检测当前有多少个键值对

var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

res = var1.items()
print(res)      #(输出) 4

len()

获取当前字典的长度, 只能检测当前有多少个键值对

var1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

res = len(var1)
print(res)      #(输出) dict_items([('b', 2), ('c', 3), ('d', 4), ('aa', 'AA')])

iter()

返回以字典的键为元素的迭代器

vardict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

res = iter(vardict)		# 存放键的迭代器

pop()

指定弹出,通过 key 从当前字典中弹出键值对

vardict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

res = vardict.pop('a')
print(res)		#(输出) 1

popitem()

末尾弹出,把最后加入到字典中的键值对删除并返回一个元组 LIFO: 后进先出

vardict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

res = vardict.popitem()
print(res)		#(输出) ('d', 4)

get()

使用 get() 获取字典中的元素, 存在则返回, 不存在则默认返回None

vardict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

# 存在返回value
print(vardict.get('b'))						#(输出) 2
# 不存在返回None
print(vardict.get('apple'))                 #(输出) None
# 可以修改不存在返回的默认值
print(vardict.get('apple', 'no find'))      #(输出) no find

update()

更新字典, 如果key存在, 则更新, 不存在则添加

vardict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

vardict.update(b=22, abc=123)   		# 修改b的值为22, 添加abc=123
vardict.update({'c':33, 'def':44})      # 也可以接受字典对象
print(vardict)

#(输出) {'a': 1, 'b': 22, 'c': 33, 'd': 4, 'abc': 123, 'def': 44}

setdefault()

如果key存在, 返回它的值, 如果不存在, 插入值为default 的键 key, 并返回 default , default默认为None

vardict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

res = vardict.setdefault('aa','123456')		# 不存在key='aa', 插入'aa'=123456, 返回123456
print(res)			#(输出) 123456
print(vardict)		#(输出) {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'aa': '123456'}

clear()

移除字典中的所有元素

copy()

  • 字典的浅拷贝

字典的推导式

语法:{key:value for key, value in iterable}⇒ 新字典

vardict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 将值为偶数的元素取出生成一个新字典
newdict = {k:v for k, v in vardict.items() if v % 2 == 0}
print(newdict)

#(输出) {'b': 2, 'd': 4}