字典:
1、字典的概念
使用 键-值(key - value)对存储,具有极快的查找速度
- 字典是无序的:
key的特特性:
- 1、key必须唯一
- 2、key必须是不可变的对象
- 3、字符串、整数等都是不可变的,可以做key(一般都是字符串作为key)
- 4、list是可变的不可做为key
2、元素的访问
2.1、字典的创建
2.1.1、创建空字典
dict = {}
2.1.2、创建非空字典
{键:值} 例如:dict = {"张三": 60, "李四": 70, "王五": 80}
2.2、 获取:
- 字典名[key] 也可也用来更改字典的值
dict1 = {"张三": 60, "李四": 70, "王五": 80}
print("=======原始字典=======")
print(dict1)
print("=======通过字典的建来访问字典中的值======")
print("张三的分数为:", dict1["张三"])
运行结果;
- 字典名.get(key) 如果没有我们要找的值返回None
dict1 = {"张三": 60, "李四": 70, "王五": 80}
print("=======原始字典=======")
print(dict1)
print("=======通过字典的建来访问字典中的值======")
print("张三的分数为:", dict1["张三"])
print("王五的分数为:", dict1.get("王二"))
ret = dict1.get("赵六")
if ret == None:
print("没有")
else:
print("有")
运行结果:
2.3、 添加:
字典名[key] = 值 即修改
dict1 = {"张三": 60, "李四": 70, "王五": 80} print("=======原始字典=======") print(dict1) print("=======通过字典的建来访问字典中的值======") print("张三的分数为:", dict1["张三"]) print("王五的分数为:", dict1.get("王二")) ret = dict1.get("赵六") if ret == None: print("没有") else: print("有") dict1["赵六"] = 100#添加 dict1["张三"] = 90#修改 print("===添加和修改后的字典===") print(dict1)
运行结果:
2.4、删除:
- 字典名.pop(“要删除的key名字”)
dict1 = {"张三": 60, "李四": 70, "王五": 80}
print("=======原始字典=======")
print(dict1)
print("=======通过字典的建来访问字典中的值======")
print("张三的分数为:", dict1["张三"])
print("王五的分数为:", dict1.get("王二"))
ret = dict1.get("赵六")
if ret == None:
print("没有")
else:
print("有")
dict1["赵六"] = 100#添加
dict1["张三"] = 90#修改
print("===添加和修改后的字典===")
print(dict1)
print("======删除pop()======")
dict1.pop("张三")
print("删除后的字典的为:", dict1)
运行结果:
2.5、字典的两个常用方法
- 1、 values();
用法:字典名.values()
返回值:以字典中的值为元素的列表
dict1 = {"张三": 60, "李四": 70, "王五": 80}
print("==================原始字典===================\n")
print(dict1)
print("============字典values()方法================\n")
print(dict1.values())
print("将字典中的值转换成列表:", list(dict1.values()), "\n")
运行结果;
- 2、items()
用法:字典名.items()
返回值:以字典中的键值对组成的元组为元素的列表
dict1 = {"张三": 60, "李四": 70, "王五": 80}
print("==================原始字典===================\n")
print(dict1)
print("============字典values()方法================\n")
print(dict1.values())
print("将字典中的值转换成列表:", list(dict1.values()), "\n")
print("=======字典items()方法=======")
print(dict1.items())
print("将字典中的元素转换成列表", list(dict1.items()))
print("将字典中的元素转换成元组", tuple(dict1.items()))
运行结果:
2.5、字典的遍历
2.5.1、遍历字典中的键和值: for i in 字典名:
dict1 = {"张三": 60, "李四": 70, "王五": 80}
print("==================原始字典===================\n")
print(dict1)
print("=======遍历字典中的键======")
for i in dict1:
print(i)
print("=========用键取值===========")
for i in dict1:
print(i, dict1[i])
运行结果;
2.5.2、values()方法遍历字典中的值: for i in 字典名.values()
dict1 = {"张三": 60, "李四": 70, "王五": 80}
print("=================原始字典=================\n")
print(dict1)
print("==============遍历字典中的键===============")
for i in dict1:
print(i)
print("=================用键取值=================")
for key in dict1:
print(key, dict1[key])
print("=========遍历字典中的值values()实现========")
for value in dict1.values():
print(value)
运行结果:
2.5.3、items()遍历字典中的键和值 for k, v in 字典名.items()
dict1 = {"张三": 60, "李四": 70, "王五": 80}
print("=================原始字典=================\n")
print(dict1)
print("==============遍历字典中的键===============")
for i in dict1:
print(i)
print("=================用键取值=================")
for key in dict1:
print(key, dict1[key])
print("=========遍历字典中的值values()实现========")
for value in dict1.values():
print(value)
print("=========遍历字典中的键和值items()实现==========")
for k, v in dict1.items():
print(k, v)
运行结果:
2.5.4、enumerate()遍历字典中的值的下标和值 for k, v in enumerate(字典名)
此方法不常用因为字典中的值是无序的
dict1 = {"张三": 60, "李四": 70, "王五": 80}
print("=================原始字典=================\n")
print(dict1)
print("==============遍历字典中的键===============")
for i in dict1:
print(i)
print("=================用键取值=================")
for key in dict1:
print(key, dict1[key])
print("=========遍历字典中的值values()实现========")
for value in dict1.values():
print(value)
print("=========遍历字典中的键和值items()实现==========")
for k, v in dict1.items():
print(k, v)
print("========遍历字典中的值的下标和值===========")
for k2,v2 in enumerate(dict1):
print(k2, v2)
运行结果:
3、练习
3.1、求一句话中单词出现的个数
word = input("请输入要查找的单词")
dict = {}#空字典存放键为单词,值为单词出现的次数
str2 = "wnike all day wnike all day wnike all day i do not know what i want to say"
list1 = str2.split(" ")#用空格把字符串分割返回一个列表
for value in list1:#遍历列表
flag = dict.get(value)#空字典中是否有列表中的单词
if flag == None:
dict[value] = 1
else:
dict[value] += 1
print("%s 出现的次数是%d"%(word, dict.get(word)))#get()方法的好处是没有那个键时返回None,而不是程序抱错
print("每个单词出现的次数",dict)
运行结果;