• 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
  • 相关阅读:
    grep 匹配打印的上下几行
    java List<String>的初始化
    HashMap优雅的初始化方式以及引申
    protocol buffer开发指南(官方)
    20种常用的DOS命令小结
    linux xfs文件系统无法用readdir获取dirent文件类型d_type则用stat获取暨stat函数讲解
    java中jar命令打包一个文件夹下的所有文件
    C/C++中的格式化字符
    自定义标签(JspFragment类、invoke方法、开发带属性的标签)
    java中Scanner类nextLine()和next()的区别和使用方法
  • 原文地址:https://www.cnblogs.com/wzc27229/p/10938769.html
Copyright © 2020-2023  润新知