数据类型可以按照多种角度进行分类,就跟咱们人一样,人按照地域可以划分分为亚洲人,欧洲人,美洲人等,但是按照肤色又可以分为白种人,黄种人,黑种人,等等,数据类型可以按照不同的角度进行分类,先给大家按照可变与不可变的数据类型的分类:
不可变(可哈希)的数据类型:int,str,bool,tuple。
可变(不可哈希)的数据类型:list,dict,set。
字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的:
Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的。
Value:任意数据(int,str,bool,tuple,list,dict,set),包括后面要学的实例对象等。
在Python3.5版本(包括此版本)之前,字典是无序的。
在Python3.6版本之后,字典会按照初建字典时的顺序排列(即第一次插入数据的顺序排序)。
当然,字典也有缺点:他的缺点就是内存消耗巨大。
----------------------------------------------------------------------------------------------------------------------------------
创建字典的几种方式:
# 创建字典的几种方式: # 方式1: dic = dict((('one', 1),('two', 2),('three', 3))) # dic = dict([('one', 1),('two', 2),('three', 3)]) print(dic) # {'one': 1, 'two': 2, 'three': 3} # 方式2: dic = dict(one=1,two=2,three=3) print(dic) # {'one': 1, 'two': 2, 'three': 3} # 方式3: dic = dict({'one': 1, 'two': 2, 'three': 3}) print(dic) # {'one': 1, 'two': 2, 'three': 3} # 方式5: 后面会讲到先了解 dic = dict(zip(['one', 'two', 'three'],[1, 2, 3])) print(dic) # 方式6: 字典推导式 后面会讲到 # dic = { k: v for k,v in [('one', 1),('two', 2),('three', 3)]} # print(dic) # 方式7:利用fromkey后面会讲到。 # dic = dict.fromkeys('abcd','太白') # print(dic) # {'a': '太白', 'b': '太白', 'c': '太白', 'd': '太白'}
dict = {"name":"Tom"}
增:dict["age"] = 2 存在就覆盖
dict.setdefault(“name”,"Alex") 没有就增加,有就不变
#它有返回值 dic = {'name': '太白', 'age': 18} ret = dic.setdefault('name') print(ret) # 太白
删: pop() 按照key删除,有返回值
clear 清空
del dict["name"] 删除
popitem() 随机删除,返回元组,3.6版本之后删除最后一个
改:通过键值直接改
update
dic = {'name': '太白', 'age': 18} dic.update(sex='男', height=175) print(dic) # {'name': '太白', 'age': 18, 'sex': '男', 'height': 175} dic = {'name': '太白', 'age': 18} dic.update([(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')]) print(dic) # {'name': '太白', 'age': 18, 1: 'a', 2: 'b', 3: 'c', 4: 'd'} dic1 = {"name":"jin","age":18,"sex":"male"} dic2 = {"name":"alex","weight":75} dic1.update(dic2) print(dic1) # {'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75} print(dic2) # {'name': 'alex', 'weight': 75}
查:dict["key"]
dict.get("key")
dict.keys()
dict.values()
dict.items() 打印键值对
---------------------------------------------------------------
for k,v in dict.items(): 循环遍历键值对 (利用拆包原理。详细下看)
print(k,v)
dict.get(key,none) 返回值
# 通过键查询 # 直接dic[key](没有此键会报错) dic = {'name': '太白', 'age': 18} print(dic['name']) # 太白 # get dic = {'name': '太白', 'age': 18} v = dic.get('name') print(v) # '太白' v = dic.get('name1') print(v) # None v = dic.get('name2','没有此键') print(v) # 没有此键 keys() dic = {'name': '太白', 'age': 18} print(dic.keys()) # dict_keys(['name', 'age']) values() dic = {'name': '太白', 'age': 18} print(dic.values()) # dict_values(['太白', 18]) items() dic = {'name': '太白', 'age': 18} print(dic.items()) # dict_items([('name', '太白'), ('age', 18)])
------------------------------------------------------------------
dic = {'剑圣':'易','哈啥给':'剑豪','大宝剑':'盖伦'} for i in dic.items(): print(i) 结果: ('剑圣', '易') ('哈啥给', '剑豪') ('大宝剑', '盖伦')
fromkeys 数据类型
dic = dict.fromkeys("abcd","老王") print(dic) ----------------------------------------- {'d': '老王', 'c': '老王', 'a': '老王', 'b': '老王'}
---------------------------------------------------
dic = dict.fromkeys([1, 2, 3],'太白') print(dic) # {1: '太白', 2: '太白', 3: '太白'}
拆包(分别赋值)
a,b = 1,2 print(a,b) 结果: 1 2 a,b = ('你好','世界') # 这个用专业名词就叫做元组的拆包 print(a,b) 结果: 你好 世界 a,b = ['你好','大飞哥'] print(a,b) 结果: 你好 世界 a,b = {'汪峰':'北京北京','王菲':'天后'} print(a,b) 结果: 汪峰 王菲
------------------------------------------------------------------------------------------------------------------------
"""输出商品列表,用户输入序号,显示用户选择的商品 商品 li = ["手机","电脑","鼠标","飞机"] 要求:1.页面显示 序号+名称 2.用户输入序号,打印商品名称 3.若输入序号有误,提示有误,重新输入 4.输入q/Q,退出""" li = ["手机","电脑","鼠标","飞机"] for j in range(0,len(li)): print("%d %s"%((j+1),li[j])) j += 1 while 1: i = input("用户输入商品序号:") if i.isdigit() == True: if int(i) in range(len(li) + 1): print(li[int(i) - 1]) continue else: print("输入有误,重新输入") continue elif i.upper() == "Q": print("退出") break else: print("输入有误,重新输入") continue