一、Python 字典(Dictionary)
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value
对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {}
中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
>>>dict = {'a': 1, 'b': 2, 'b': '3'}
>>> dict['b']
'3'
>>> dict
{'a': 1, 'b': '3'}
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
1、例子
# python的数据类型:字典
# 数据类型与变量关联
name = 'bily'
num = 89
key = 88.8
list = [3,4,5,6]
tuple = (6,4,68)
# 字典的例子:键和值
dict = {'name':'老周','age':'29','job':'程序员'}
print(dict)
dict1={1:101,2:102}
print(dict1)
以上实例输出结果:
{'name': '老周', 'age': '29', 'job': '程序员'} {1: 101, 2: 102}
表和元组直接写入值即可,而字典需要键和值皆有。
2、简单的字典的操作
# 定义一个字典
dict2 = {
'河北':'石家庄',
'甘肃':'兰州',
'四川':'成都'
}
print(dict2)
# 对字典进行访问(取值)==> 值=字典的名称[键]
sjz = dict2['河北']
print(sjz)
# 添加字典的数据(键值对)
dict2['山西']='太原'
print(dict2)
# 修改字典的值
dict2['河北']='邢台'
print(dict2)
# 删除字典的键-值对
del dict2['四川']
print(dict2)
以上实例输出结果:
# 原来的数据 {'河北':'石家庄','甘肃':'兰州','四川':'成都'} # 访问键(河北) 石家庄 # 添加键值对('山西': '太原') {'河北': '石家庄', '甘肃': '兰州', '四川': '成都', '山西': '太原'} # 修改字典的值(石家庄改为邢台) {'河北': '邢台', '甘肃': '兰州', '四川': '成都', '山西': '太原'} # 删除字典的键-值对(四川) {'河北': '邢台', '甘肃': '兰州', '山西': '太原'}
二、遍历字典
1、定义一个字典
dict = {'name':'老周','age':'29','job':'程序员'}
# 遍历字典:键值对的集合、健的集合、值的集合
for key,value in dict.items():
print(key+":"+value)
以上实例输出结果:
name:老周 age:29 job:程序员
2、遍历字典常用的方法
print(dict.items())
print(dict.keys())
print(dict.values())
以上实例输出结果:
dict_items([('name', '老周'), ('age', '29'), ('job', '程序员')]) dict_keys(['name', 'age', 'job']) dict_values(['老周', '29', '程序员'])
3、字典元素的个数
print(len(dict))
以上实例输出结果:
3
4、复制字典
dict1 = {}
dict1 = dict.copy()
print(dict1)
以上实例输出结果:
{'name': '老周', 'age': '29', 'job': '程序员'}
5、将字典的键排序
print(sorted(dict1.keys()))
print(sorted(dict1.values()))
for info in sorted(dict1.keys()):
print(info,end=" ")
print("\n")
for info in sorted(dict1.keys()):
print(value,end=" ")
以上实例输出结果:
['age', 'job', 'name'] ['29', '程序员', '老周'] age job name 程序员 程序员 程序员
6、使用函数获取字典值
print(dict1.get('age'))
以上实例输出结果:
29
7、删除字典的方法
# 删除字典
# dicr1.clear()
dict = {'name':'老周','age':'29','job':'程序员'}
print(dict)
# 删除末尾
#print(dict.popitem())
#print(dict)
# 指定删除
print(dict.pop('age'))
print(dict)
以上实例输出结果:
{'name': '老周', 'age': '29', 'job': '程序员'} 29 {'name': '老周', 'job': '程序员'}
8、小练习
(1)编写一个字典,检查给定键是否已经存在于字典中。
dict = {
'name':'xgp',
'ah':'sleep',
'yd':'pb',
}
print(dict)
以上实例输出结果:
{'name': 'xgp', 'ah': 'sleep', 'yd': 'pb'}
(2)编写一个Python程序,把已存在的一个字典添加到一个空字典中。
dict1 = {}
dict1 = dict.copy()
print(dict1)
以上实例输出结果:
{'name': 'xgp', 'ah': 'sleep', 'yd': 'pb'}
(3)编写一个字典,遍历出该字典所有的键、值、键值对。
dict2 = {
'1':'1',
'2':'2',
'3':'3',
'4':'4',
'5':'5'
}
print(dict2.keys())
print(dict2.values())
print(dict2.items())
以上实例输出结果:
dict_keys(['1', '2', '3', '4', '5']) dict_values(['1', '2', '3', '4', '5']) dict_items([('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5')])
三、字典与列表的嵌套
1、定义一个字典
dict = {'name':'老周','age':'29','job':'程序员'}
dict1 = {'name':'老周','age':'29'}
dict2 = {'age':'29','job':'程序员'}
print(dict,dict1,dict2)
以上实例输出结果:
{'name':'老周','age':'29','job':'程序员'},{'name':'老周','age':'29'},{'age':'29','job':'程序员'}
2、列表里嵌套字典
list = [dict,dict1,dict2]
print(list)
以上实例输出结果:
[{'name': '老周', 'age': '29', 'job': '程序员'}, {'name': '老周', 'age': '29'}, {'age': '29', 'job': '程序员'}] {'pet': ['cat', 'dog', 'duck']}
3、字典里嵌套列表
dict3 ={'pet':['cat','dog','duck']}
print(dict3)
以上实例输出结果:
{'pet': ['cat', 'dog', 'duck']}
4、字典里嵌套字典
dict4 = {
'age':{'gir1':'18','boy':'20'},
'job':{'man':'IT','women':'db'}
}
print(dict4)
for key, value in dict4.items():
print('key:'+key,end=" ")
for v in value.items():
print(v)
以上实例输出结果:
{'age': {'gir1': '18', 'boy': '20'}, 'job': {'man': 'IT', 'women': 'db'}} key:age ('gir1', '18') ('boy', '20') key:job ('man', 'IT') ('women', 'db')
四、小测试
1、创建两个字典来表示老师,然后将这两个字典存储到一个名为person的列表中。遍历这个列表,将其中每个老师的信息都打印出来。
(1)创建两个字典来表示老师
dict = {
'name':'xgp',
'age':'18',
'job':'编程老师'
}
dict1 = {
'name':'wsd',
'age':'20',
'job':'运维老师'
}
print(str(dict)+str(dict1))
以上实例输出结果:
{'name': 'xgp', 'age': '18', 'job': '编程老师'}{'name': 'wsd', 'age': '20', 'job': '运维老师'}
(2)两个字典存储到一个名为person的列表中
person = [dict,dict1]
print(person)
以上实例输出结果:
[{'name': 'xgp', 'age': '18', 'job': '编程老师'}, {'name': 'wsd', 'age': '20', 'job': '运维老师'}]
(3)遍历这个列表,将其中每个老师的信息都打印出来
for key,value in person[0].items():
print(key+":"+value)
print('\n')
for key,value in person[1].items():
print(key+":"+value)
以上实例输出结果:
name:xgp age:18 job:编程老师 name:wsd age:20 job:运维老师
2、创建多个字典,每个字典都使用一种宠物的名字命名;在每个字典中,包含宠物的类型和主人的名字。将这些字典存储在一个名为pets的列表中,再遍历该列表,将宠物的信息都打印出来。
(1)创建多个字典,每个字典都使用一种宠物的名字命名;在每个字典中,包含宠物的类型和主人的名字。
dog = {
'dog':'柯基',
'type':'Optimistic',
'master':'xgp',
}
cat = {
'cat':'加菲猫',
'type':'lively',
'master':'wsd'
}
bird = {
'bird':'鹦鹉',
'type':'free',
'master':'dsw'
}
print(dog)
print(cat)
print(bird)
以上实例输出结果:
{'dog': '柯基', 'type': 'Optimistic', 'master': 'xgp'} {'cat': '加菲猫', 'type': 'lively', 'master': 'wsd'} {'bird': '鹦鹉', 'type': 'free', 'master': 'dsw'}
(2)将这些字典存储在一个名为pets的列表中
pets = [dog,cat,bird]
print(pets)
以上实例输出结果:
[{'dog': '柯基', 'type': 'Optimistic', 'master': 'xgp'}, {'cat': '加菲猫', 'type': 'lively', 'master': 'wsd'}, {'bird': '鹦鹉', 'type': 'free', 'master': 'dsw'}]
(3)遍历该列表,将宠物的信息都打印出来
for key,value in pets[0].items():
print(key+":"+value)
print('\n')
for key,value in pets[1].items():
print(key+":"+value)
print('\n')
for key,value in pets[2].items():
print(key+":"+value)
以上实例输出结果:
dog:柯基 type:Optimistic master:xgp cat:加菲猫 type:lively master:wsd bird:鹦鹉 type:free master:dsw
来源:51CTO
作者:mb5cd21e691f31a
链接:https://blog.51cto.com/14320361/2478891