person ={'name':'zhangsan','age':18,'height':180,'age':20,# 会替换上一个age的值'isPass':True,# 值可以是布尔值'hobbies':['唱','跳','rap'],4:'good'# key只能是不可变数据类型如:字符串,数字,元组}
person.popitem()# 删除最后一个键值对print(person)# 第一种遍历,直接for...in循环遍历for x in person:print(x,'=', person[x], sep="", end=" ")print()# 第二种方式遍历# 获取到所有的key值,然后再遍历key,根据key获取valuefor k in person.keys():print(k,'=', person[k], sep="", end=" ")print()# 第三种遍历for item in person.items():# 列表里的元素是元组print(item,end=" ")# ('name', 'zhangsan') ('age', 20) ('height', 180) ('isPass', True) ('hobbies', ['唱', '跳', 'rap'])print()for k, v in person.items():print(k,'=', v, sep="", end=" ")
字典里面的推导式
person ={'name':"张三",'age':18}# 实现key和value倒置
person ={v: k for k, v in person.items()}print(person)
字典的注意事项
person ={'name':'zhangsan','age':18,'height':180,'age':20,# 会替换上一个age的值'isPass':True,# 值可以是布尔值'hobbies':['唱','跳','rap'],4:'good'# key只能是不可变数据类型如:字符串,数字,元组}# 1.字典里的key不允许重复,如果key重复了,后一个key对应的值会覆盖前一个# 2.字典里的value可以是任意数据类型,但是key只能使用不可变数据类型,一般使用字符串print(person)
字典里面存在问题事例
persons =[{'name':'张三','age':22},{'name':'李四','age':20},{'name':'王五','age':20}]
name =input('请输入你的姓名:')for person in persons:# in用在字典上,是用来判断key是否存在而不是valueif person['name']== name:print("你的信息已经存在")breakelse:
p ={}
age =int(input("请输入年龄:"))
p['name']= name
p['age']= age
persons.append(p)print('用户添加成功')print(persons)
import random
k =[]
ch =[]
dict_1 ={}for value inrange(1,101):
k.append(random.randint(65,90))# 随机生成100个65到90之间的数字for i in k:
ch.append(chr(i))# 把相应的随机数转换为字符加入到新的列表中
ch.sort()# 把对应的字符进行排序,生成字典序print(ch)# 另一种统计字符出现的次数方法for char in ch:if char in dict_1:
dict_1[char]+=1else:
dict_1[char]=1# 方法二:for k in ch:if k notin dict_1:
dict_1[k]= ch.count(k)# 把相应的字符加入到字典中,并且用count方法统计相应的字符在列表中出现的次数print(dict_1)# 字符出现次数最多的是什么字符:
vs = dict_1.values()
max_count =max(vs)for k, v in dict_1.items():if v == max_count:print(k, sep="", end=" ")print()print(max_count)
元组练习
sing =('李白','白居易','李清照','杜浦','王昌龄','王维','孟浩然','王安石')
dance =('李商隐','杜浦','李白','白居易','岑参','王昌龄')
rap =('李清照','刘禹锡','岑参','王昌龄','苏轼','王维','李白')# 求选课学生一共有多少人# 元组之间支持加法运算# 使用set集合可以去重
total = sing + dance + rap
set_1 =set(total)print(len(set_1))# 求只选了第一个学科的人的数量和对应的名字# 方法一:
count =0for p in sing:if p notin dance and p notin rap:
count +=1print(p, end=" ", sep=" ")print()print(count)# 方法二:
s =set(sing)
d =set(dance)
r =set(rap)
d =(s - d)- r
print(d)# 3.求只选了一门学科的学生数量和对应的名字dict={}for p in total:if p notindict:dict[p]=total.count(p)print(dict)