day05_字典

   数据类型可以按照多种角度进行分类,就跟咱们人一样,人按照地域可以划分分为亚洲人,欧洲人,美洲人等,但是按照肤色又可以分为白种人,黄种人,黑种人,等等,数据类型可以按照不同的角度进行分类,先给大家按照可变与不可变的数据类型的分类:

    不可变(可哈希)的数据类型: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
原文地址:https://www.cnblogs.com/wzc27229/p/10938769.html