字典是 python 提供的一种常用的数据结构,它用于存放具有映射关系的数据;字典相当于保
存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为
value。
字典可使用 { } 来创建,也可使用 dict() 函数来创建字典。实际上,dict 是一种类型,它就是
Python 中的字典类型;在使用 { } 创建字典时,花括号中应包含多个 key-value 对,key 与 value
之间用英文冒号隔开;多个 key-value 对之间用英文逗号隔开。
注意:
元组可以做为字典的key值,但是列表不可以作为key值,这是由于 dict 要求 key 必须是不可
变类型,但列表是可变类型,因此列表不能作为元组的 key。
2. 字典特性(1)不可变类型
(2)可以嵌套
(3)键一般都是字符串,值可以是字符串、列表、字典
3. 创建字典 格式:字典名 = { key:value }#方法1:
d1 = {"name": "tom", "age": 18, "addr":"hebei"}
print(type(d1))
print(d1)
#方法2:
d2 = dict(name="tom", age=18, addr="hebei")
print(type(d2))
print(d2)
4. 字典的操作
(1)len( ) 返回对象中键值对的数量
dict1 = {"name":"lihang","age": 18, "sex":"girl"}
s=len(dict1) # 查看字典的长度
print(s)
(2)字典名[key] 返回字典中指定的key所对应 的值
dict1 = {"name":"lihang","age": 18, "sex":"girl"}
print(dict1["name"]) #查看字典中键名为name的值
(3)字典名[key] = value 修改字典的中的某个键的值或者在字典中添加值
dict1 = {"name":"lihang","age": 18, "sex":"girl"}
print(dict1)
dict1["age"] = 20 # 将字典中键名为age的值修改为20
print(dict1)
dict1["tel"] ="13622" # 在字典中添加一个键值对
print(dict1)
(4)del 字典名[key] 删除字典中的值
dict1 = {"name":"lihang","age": 18, "sex":"girl"}
del dict1["age"] # 将dict1字典中的age元素直接删除
print(dict1)
(5)clear 方法 删除字典中的数据
dict1 = {"name":"lihang","age": 18, "sex":"girl"}
dict1.clear() # 清空字典
print(dict1) # dict1={}
(6)key in 字典名 检查字典中是否有这个指定的key【has_keys】
dict1 = {"name":"lihang","age": 18, "sex":"girl"}
if "name" in dict1:
print("yes") #判断字典中是否有指定的key,如果有,输出yes
(7)pop 方法 从字典中弹出一个键值对
dict1 = {'name':'lihang','age': 18, 'sex':'girl'}
s = dict1.pop('age')
print(s) # 有age直接删除---有返回值,按键删除
print(dict1) # 删除age后的字典 {'name':'lihang','sex':'girl'}
(8)copy方法 从字典中复制全部的键值对给一个新的变量
dict1 = {"name":"lihang","age": 18, "sex":"girl"}
dict2=dict1.copy() # 将字典dict1中的全部键值对复制到新字典dict2中
print(dict2)
(9)item方法 将字典中的键值对转换成元组/列表的一个的元素
dict1 = {"name":"lihang","age": 18, "sex":"girl"}
s = dict1.items() # 将字典中的键值对转换成元组/列表的一个的元素
print(s)
(10)keys 将字典的全部的键构成一个列表/元素
dict1 = {"name":"lihang","age": 18, "sex":"girl"}
s = dict1.keys() # 将字典的全部的键构成一个列表/元素
print(s)
(11)values 将字典的全部的值构成一个列表/元素
dict1 = {"name":"lihang","age": 18, "sex":"girl"}
s = dict1.values() # 将字典的全部的值构成一个列表/元素
print(s)
案例:让用户输入个人基本信息,包括 姓名、电话、住址、年龄,通过字典保存用户的数据信息,当用户输入q的时候,结束输入;
结束输入后,打印显示全部的用户名,并要求选择一个名称;
然后打印输出这个用户的全部信息,输出信息的格式:用户 xxx,电话是xxx,地址是xxx,年龄是xxx。
import sys
d1 = {}
li = []
while True:
name = input("请输入姓名或者按Q退出:")
name = name.lower()
if name == "q":
break
phoneNum = input("请输入电话: ")
userAge = input("请输入年龄: ")
homeAddr = input("请输入地址: ")
d1[name] = {"tel":phoneNum, "addr":homeAddr ,"age":userAge}
li.append(name)
n = 1
print("================请根据菜单选择姓名=====================")
for uname in li:
print("%d %s"%(n,uname))
n += 1
print("输入q退出:")
userInput = input("请选择:")
if userInput == "q":
sys.exit(0)
userInput = int(userInput)
uname = li[userInput - 1]
age = d1[uname]["age"]
addr = d1[uname]["addr"]
tel = d1[uname]["tel"]
print("用户%s,电话是%s,地址是%s,年龄是%s"%(uname,tel,addr,age))
5. 遍历序列对象
(1) 遍历字符串方法
# 方法1: str = "abcd hallo world" for var in str: print(var) # 方法2: str = "abcd hallo world" num_len = len(str) for num in range(num_len): print(str[num])(2)遍历列表方法
# 方法1:
str = [1,2,8,11,7,3] for var in str: print(var)
# 方法2:
str = [1,2,8,11,7,3] num_len = len(str) for num in range(num_len): print(str[num])
# 方法3:
str = [1,2,8,11,7,3] num_len = len(str) for num in range(num_len): print(str.pop())
# 方法4:
str = [1,2,8,11,7,3] num_len = len(str) for num in range(num_len): print(str[num]) del str[num](3) 遍历元组的方法
# 方法1
str = (1,2,8,11,7,3)
str = list(str)
for var in str:
print(var)
str = tuple(str)
# 方法2
str = (1,2,8,11,7,3)
num_len = len(str)
str = list(str)
for num in range(num_len):
print(str[num])
str = tuple(str)
(4) 遍历字典的方法
1)遍历字典的key
# 方法1:
d1 = {"name":"tom", "age":18, "addr":"hb", "tel":"136666666"}
for var in d1: # 每次循环是将将键赋值给var
print(var,end=" ")
print(d1[var])
# 方法2:
d1 = {"name":"tom", "age":18, "addr":"hb", "tel":"136666666"}
v = d1.keys()
for var in v:
print(var)
2)遍历字典的value
d1 = {"name":"tom", "age":18, "addr":"hb", "tel":"136666666"}
v = d1.values()
for var in v:
print(var)
3)遍历字典的键值对
d1 = {"name":"tom", "age":18, "addr":"hb", "tel":"136666666"}
v = d1.items()
for var in v:
print(var



