目录
一.字典的创建
字典是另一种可变容器模型,且可存储任意类型对象。每一个元素都以键值对的形式存在,一个字典中键是唯一的,值不唯一。
1.用“{ }”创建字典
字典的每个键值对 key:value ,每个对之间用逗号“,”分割,整个字典包括在花括号 {} 中 ,基本格式:
dict = {key1 : value1, key2 : value2, key3 : value3 }
参数:
key1, key2,key3 -- 字典的键
value1,value2, value3 -- 字典的值
示例1:
dict = {} #创建一个空字典
print(dict)
print(type(dict))
运行结果:
{}
<class 'dict'>
示例2:
dict = {1:'python',2:'java','a':3,'b':4}
print(dict)
运行结果:
{1: 'python', 2: 'java', 'a': 3, 'b': 4}
2.dict() 函数创建字典
示例:
log1 = dict() # 创建空字典
print(log1)
log2 = dict(name='Jerry', age=19, height=190) # 传入关键字
print(log2)
#zip()创建可迭代对象
log3 = dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典
print(log3)
#以元组的形式组成序列创建字典
log4 = dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典
print(log4)
运行结果:
{}
{'name': 'Jerry', 'age': 19, 'height': 190}
{'one': 1, 'two': 2, 'three': 3}
{'one': 1, 'two': 2, 'three': 3}
zip()创建可迭代对象,传递在运行时将键和值的序列进行zip配对的结果,例如从文件中读取数据配对来创建字典。
在第一次用dict() 函数创建字典时,可能会出现下面问题:
TypeError: 'dict' object is not callable
原因: dict()是python的一个内建函数,如果将dict自定义为一个python字典,在之后想调用dict()函数是会报出“TypeError: 'dict' object is not callable”的错误。
解决办法:在创建dict()函数前面加上:del (dict)
3.fromkeys() 创建字典
示例:
seq = ['小明','小刚','小东']
value = ['打篮球','跑步','弹钢琴'] #可以初始每个人的共同属性
#fromkeys(seq,value)
my_dict = dict.fromkeys(seq, value)#创建一个新的字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
print(my_dict)
运行结果:
{'小明': ['打篮球', '跑步', '弹钢琴'], '小刚': ['打篮球', '跑步', '弹钢琴'], '小东': ['打篮球', '跑步', '弹钢琴']}
二.获取字典的元素
基本格式:
dict.get(k,[default]) -- 获得k(键)对应的值,不存在则返回default
dict.items() -- 获得由键和值组成的元组,作为元素的列表
dict.keys() -- 获得键的迭代器
dict.values() -- 获得值的迭代器
调用get() 时,如果没有指定第二个参数且指定的键不存在,Python将返回值None 。这个特殊值表示没有相应的 值。None 并非错误,而是一个表示所需值不存在的特殊值。
示例:
dict1 = {'name': 'jerry', 'age': 18}
#通过key值来获取对应的value
print(dict1['name'])
print(dict1.get('name'))
#获取键值对
print(dict1.items())
#获取键
print(dict1.keys())
#获取值
print(dict1.values())
运行结果:
jerry
jerry
dict_items([('name', 'jerry'), ('age', 18)])
dict_keys(['name', 'age'])
dict_values(['jerry', 18])
三.字典元素的删除
dict.pop(k) -- 删除k(键)对应的键:值对
dict.popitem() -- 从字典中删除任一k:value元素,并返回它
dict.clear() -- 清空字典
del -- 删除对应的键值对
1.通过pop()方法删除指定键
示例:
dict2 = {'name': 'jerry', 'age': 18}
dict2.pop('age') #删除指定给定键所对应的值,返回这个值并从字典中把它移除
print(dict2)
运行结果:
{'name': 'jerry'}
2.通过del删除
示例:
dict2 = {'name': 'jerry', 'age': 18}
del dict2['name']
print(dict2)
运行结果:
{'age': 18}
3.通过popitem()删除
示例:
dict3 = {'name': 'join', 'age': 25,'gender': 'man'}
dict3.popitem()
dict3.popitem() #从后往前删
print(dict3)
运行结果:
{'name': 'join'}
4.通过clear()删除
示例:
dict4 = {'name': 'join', 'age': 25,'gender': 'man'}
dict4.clear() #清除所有元素
print(dict4)
运行结果:
{}
四.setdefault() 返回指定键的值,如果键不在字典中,将会返回特定值
示例:
dict4 = {'name': 'Jerry', 'age': 25, 'gender': 'man'}
print('字典中存在的key,返回对应value:', dict4.setdefault('age', 0))#该方法接收两个参数,第一个参数是键的名称,第二个参数是默认值
print('字典中不存在的key,返回默认值:', dict4.setdefault('age1', -1))
运行结果:
字典中存在的key,返回对应value: 25
字典中不存在的key,返回默认值: -1
五.copy() 复制字典
示例:
dict4 = {'name': 'Jerry', 'age': 25, 'gender': 'man'}
dict5 = dict4.copy()
print(dict5)
运行结果:
{'name': 'Jerry', 'age': 25, 'gender': 'man'}
六.for循环遍历字典
1.遍历字典的键和值
示例:
#因此有多种遍历方式:可遍历字典的所有键值对,也可仅遍历键或值。
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key, value in user_0.items():
print(f"\nKey: {key}")
print(f"Value: {value}")
运行结果:
Key: username
Value: efermi
Key: first
Value: enrico
Key: last
Value: fermi
2.遍历字典的键
示例:
#遍历字典中的所有键
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in favorite_languages.keys():
print(name.title())
运行结果:
Jen
Sarah
Edward
Phil
3.遍历字典的值
示例:
#遍历字典中的所有值
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for language in favorite_languages.values():
print(language.title())
运行结果:
Python
C
Ruby
Python