Python 基础之 "组合数据类型" 字典

键值对
根据一个信息查找另一个信息的方式构成了"键值对",它表示索引用的键和对应的值构成的关系。

字典的特征

1.通过键从字典中获取指定的项,但是不能通过索引来获取
2.字典是无序的,也被称为hash表(散列表)
3.是python中的可变序列
4.字典中的键必须唯一,如果出现两次,后出现的将覆盖先出现的
5.字典中的键要求是不可变序列

字典的创建
1.使用{}直接创建字典

d={key1:value1;key2:value2,....}

示例:

d={10:'cat',20:'yoon',30:'hank',20:'uuu'} # key相同,后出现的覆盖先出现的
print(d)
#输出结果:{10: 'cat', 20: 'uuu', 30: 'hank'}

2.使用内置函数dict()创建字典
通过映射函数创建字典

zip(lst1,lst2)

示例:

lst1=[10,20,30,40]
lst2=['cat','dog','yoon','hank']
result=zip(lst1,lst2) # 映射函数的结果是zip对象
print(result)

print(list(result)) # 通过列表方式获取zip对象结果

d=dict(result)
print(d)

通过给定关键字创建字典

dict(key1=value1,key2=value2,....)

示例:
使用参数创建字典

d=dict(cat=10,dog=20,yoon=30,hank=40) # 参数相当于变量,变量的名字不需要加引号,指的是:cat,dog,yoon,hank
print(d)

字典的删除

del d

字典元素的访问

d[key]或d.get(key)

示例:

d={'hello':10,'yoon':20,'python':30}
# 访问字典中元素
#(1) 使用[key]
print(d['yoon'])

#(2) 使用d.get(key)
print(d.get('yoon'))

# 二者之间有区别,如果键不存在时,d[key]报错,使用d.get(key)可以指定默认值
#print(d['java']) # 报错,无java

print(d.get('java')) # 输出None,不报错
print(d.get('java','不存在'))

字典元素的遍历

for element in d.items():    for key,value in d.items():
    pass                         pass

示例:

for item in d.items():
    print(item)  # 结果是元组类型
输出结果:
('hello', 10)
('yoon', 20)
('python', 30)

# 在使用for循环,分别获取键和值
for key,value in d.items():
    print(key,value)

输出结果:
hello 10
yoon 20
python 30

字典的相关操作

d.keys()    获取所有key
k.values()  获取所有value
d.pop(key,default) key存在获取相应的value,同时删除key-value对,否则获取默认值
d.popitem() 随机从字典中获取一个key-value对,结果为元组类型,同时将该key-value从字典中删除
d.clear()   清空字典中所有的key-value对

示例:

d={1001:'李梅',1002:'王华',1003:'张三'}
print(d)
# 向字典添加数据
d[1004]='李四'
print(d)

# 获取字典所有key
keys=d.keys()
print(keys)
# 转换列表或元组
print(list(keys))
print(tuple(keys))

value=d.values()
print(value)

# pop函数
print(d.pop(1001))  # 先获取李梅,再删除李梅
print(d)

# 随机删除
print(d.popitem()) # 随机删除
print(d)

# 清空字典中所有元素
d.clear()
print(d)

字典生成式
使用指定范围的数作key

d={key:value for item in range}

使用映射函数生成字典

d={key:value for key,value in zip(lst1,lst2)}

 

posted @ 2022-06-07 21:28  __Yoon  阅读(163)  评论(0编辑  收藏  举报