Python笔记-7 字典
# # 列表是有序的对象集合,可以用角标获取list中的元素# 可以用角标获取list中的元素# brand=['李宁','鸿星尔克','361度']# slogan=['一切皆有可能','TO BE No.1','多一度热爱']# print(brand[0])# print(slogan[2])# # 元组是有序的# t1 = (1,2,'3')# print (t1[1])# 集合是无序的,不支持索引操作的# sit1 = {1,2,6,'a',1,2}# print (sit1[0])# brand=['李宁','鸿星尔克','361度'] #作为key# slogan=['一切皆有可能','TO BE No.1','多一度热爱'] #作为value
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
# dict={'李宁': '一切皆有可能', '鸿星尔克': 'TO BE No.1','361度':'多一度热爱'}# print("李宁的slogan是: ", dict['李宁'])## ####################################################### ############创建方式及注意点############## 创建字典 字典用花括号({ })表示# people_01 = {'Name': '小明', 'Age': 3}## # 可以定义空字典# people ={}# print(type(people))## #也可以用dict函数通过关键字的参数来创建字典:# d = dict(name='wzw', number=22)# print(d)## people_01 = {'Name': '小明', 'Age': 3, 'Name': '菜鸟'} #唯一性# print ("这个人的名字: ", people_01['Name'])# people_02 = {['下雨', '晴天']: '小明', 'Age': 3, 'Name': '菜鸟'} #不可变## # 字典里嵌套列表# tem = {'北京': [22, '多云'], '上海': [23, '晴天'], '深圳': [23, '小雨'], '广州': [23, '阴天']}# print(tem)## # 打印上海天气整体情况# print(tem['上海'])## # 打印上海最高温度# print(tem['上海'][0])############基本操作和内置函数############## # 访问字典里的值 字典中访问值:字典名+方括号+方括号内填要取的值的键。 注意和get方法的区别# people_01 = {'Name': '小明', 'Age': 3, 'Name': '菜鸟'}# print ("这个人的名字: ", people_01['Name'])# #print ("这个人的年龄: ", people_01['Country'])# # get是个更宽松的访问字典项的方法,当get访问一个不存在的键时,不会报错而会得到None值# print(people_01.get('Name'))# print(people_01.get('Country'))# 修改字典# people_01 = {'Name': '小明', 'Age': 3}# people_01['Age'] = 7 # 更新# people_01['Country'] = "China" # 添加 前提是字典中不存在相同的键,如果存在相同的键,则为覆盖(同上)值操作。 = update() 方法# print(people_01)# print ("这个人的年龄: ", people_01['Age'])# print ("这个人来自: ", people_01['Country'])# # update() 方法向字典插入指定的项目# car = {'brand': '宝马','model': '911','year': 1963}# car.update({'color': 'White'})# print(car)# # #还可以用该方法合并两个字典# car = {'brand': '宝马','model': '911','year': 1963}# car1 = {'color': 'White','prince': '100万','year': 2021}# car.update(car1)# print(car)# #len()方法返回字典中键—值对的数量# print (len(car))## # 检查字典中中是否有含有某键的项 key in 字典名## people_01 = {'Name': '小明', 'Age': 3,'num':[1,2,3]}# print('Age' in people_01)# print('Country' in people_01)# #del 删除字典元素# people_01 = {'Name': '小明', 'Age': 3,'num':[1,2,3]}# del people_01['Age'] #删除键值对使用 del 语句,这样会永久删除对应的键值对# print(people_01)# print('Age' in people_01)# # pop pop(key[,default])# # 注意del 语句和 pop() 函数作用相同,pop() 函数有返回值,返回删除的key对应的value。# # default: 如果没有 key,返回 default 值## people_01 = {'Name': '小明', 'Age': 3,'num':[1,2,3]}# people_01.pop('Age')# #pop_obj=people_01.pop('Age')# print(people_01)# print('Age' in people_01)# #print(pop_obj)# #print(people_01.pop(('Cou'),'本操作删除的key不存在'))# #内置的str()函数可以将指定的值转换为字符串# people_01 = {'Name': '小明', 'Age': 3}# people_0s =str(people_01)# print(people_0s)# print(type(people_0s))# print(type(people_01))###################################################### 遍历字典## # 1、遍历所有的键-值对 使用函数 items():
dict.items() 把字典中每对 key 和 value 组成一个元组,并把这些元组放在列表中返回
# print(people_01.items())
# people_01 = {'Name': '小明', 'Age': 3, 'Country': 'China','num':[1,2,3]}# for key,value in people_01.items():# print (key, value)# # 2、遍历字典中的所有键 使用函数 keys(): #print(people_01.keys())# people_01 = {'Name': '小明', 'Age': 3, 'Country': 'China','num':[1,2,3]}# for key in people_01.keys():# print(key)# # 3、遍历了字典中的所有键,那肯定可以拿到所有的值了, 使用键获取值的方法 字典名[键名]: 效果同1# people_01 = {'Name': '小明', 'Age': 3, 'Country': 'China','num':[1,2,3]}# for key in people_01.keys():# print("\n"+key.title())# print(people_01[key])# # 4、遍历字典中的所有值 使用函数 values(): 以列表形式返回字典中的所有值。# people_01 = {'Name': '小明', 'Age': 3, 'Country': 'China','num':[1,2,3]}# print (people_01.values())# 5、使用函数 sorted()按key值对字典排序:# people_01 = {'5': '小明', '3': 3, 'A': 'China','n':[1,2,3], 'F': 'N'}# print(sorted(people_01.keys()))# print(sorted(people_01.keys(),reverse=True))## # for key in sorted(people_01.keys()):# # print("\n"+key.title())#################其他操作################### #clear()方法, dict.clear() 该函数没有任何返回值# people_01 = {'Name': '小明', 'Age': 3,'num':[1,2,3]}# print ("开始的键值对数量 : %d" % len(people_01))# people_01.clear()# print ("clear后的数量 : %d" % len(people_01))# print(people_01)#copy()方法, dict.copy()# people_01 = {'Name': '小明', 'Age': 3,'num':[1,2,3]}# people_02 = people_01.copy()# print(people_02)##注意:直接赋值和 copy 的区别# people_01 = {'Name': '小明', 'Age': 3,'num':[1,2,3]}# people_02 = people_01.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用# people_03 = people_01 # 直接赋值 引用对象# # 修改 data 数据# people_01['user'] = 'root' #增加key# people_01['num'].remove(1) #修改value## # 输出结果# print(people_01)# print(people_02)# print(people_03) # people_01的引用(别名),所以输出结果都是一致的###fromkeys()方法创建字典###dict.fromkeys(seq[, value])###参数 seq -- 字典键值列表。 value -- 可选参数, 设置键序列(seq)的值。dict={}dict1 = dict.fromkeys(('Google', 'jingdong', 'Taobao'), 100) #value可不写print(dict1)dict.fromkeys((1,2,3),'number')# 注意只用来创建新字典,不负责保存。当通过一个字典来调用 fromkeys 方法时,如果需要后续使用一定记得给他复制给其他的变量。print(dict)dict2=dict.fromkeys((1,2,3),'number')print(dict2)# 练习:#userinfo = {'Andy':'111','Ellis':'222','Heywood':'333'}# #模拟用户登录判断# userinfo = {'Andy':'111','Ellis':'222','Heywood':'333'}## username = input('请输入用户名:')# password = input('请输入密码:')## #判断用户输入的登录信息,先判断用户输入的username是否在字典中(key(用户名)是否在字典里)并且判断字典中key所对应的value是否和用户输入的password相等。# if username in userinfo and userinfo[username] == password:# print('登录成功!')# else:# print('登录失败!')
