zoukankan      html  css  js  c++  java
  • python学习 day5 (3月6日)

    字典
    映射,{}键值对,key 唯一的 ,可哈希,容器型数据类型
    可变的(不可哈希): 字典 列表 集合 都不可做键
    不可变的(可哈希): 数字 字符串 bool 元组 frozeset() 可以做键

    #__author : 'liuyang' 
    #date : 2019/3/6 0006
    dic= {
        'name':'alex',
        'age':18,
        'name':'python'
    }
    print(dic)
    # 数据关联性
    dic = {
        'name_list':['博哥','菊哥','b哥'],
        'barry':{
            'name':'太白金星',
            'age':18,
            'hobby':'wife',
        }
    }
    print(dic)

    增删改查 

    一.增

    dic[key] = '****'               有则改值 无则添加

    dic.setdefault('name','liusi') ---(‘键’,‘值’)     有则不变 无则添加

    #
    dic= {
        'name':'alex',
        'age':18,
        'name':'python'
    }
    print(dic)
    #  键值对 是唯一的,默认第一个吗  第二个!
    dic['name'] = 'liuer'
    print(dic)
    # 有则改值 无则添加
    dic['nama'] = 'liusan'
    print(dic)
    # 有则不变 无则添加
    dic.setdefault('name','liusi')
    print(dic)
    dic.setdefault('nam','liuwu')
    print(dic)
    dic = {1:2 , 3:6}        # 若7 = None
    print(dic.setdefault(1))#2 #第一步先根据 键 查值
    # 第二部 有则不变 无则添加
    print(dic.setdefault(1,5)) # 返回 5 

    二.删:

      pop()  删除键值对   (返回值)

      popitem    返回值是元组,元组里是key和values

      clear()    清空

      del  按照键 

        删字典

     除了del 都是 字典.方法(key)  dic....(key) 

    #
    dic= {
        'name':'alex',
        'age':18,
        'name':'python'
    }
    d = dic.pop('name')
    print(d)
    print(dic)
    #  删没有的会报错  但是可以设置信息
    # d = dic.pop('naaa')
    d = dic.pop('naaa','没有元素')
    print(d)
    d = dic.pop('naaa',None)
    print(dic)
    print(d)
    dic.clear()
    print(dic)
    dic= {
        'name':'alex',
        'age':18,
    }
    # 删除最后一个  从3.6 开始  这个也有返回值得 pop()
    a = dic.popitem()
    print(dic)
    print(a)
    del dic['name']
    print(dic)
    # 没有元素回报错 而且没办法  用pop 第二个提示值
    # del dic['nam']
    # print(dic)
    # del dic
    # print(dic)
    #  错误   没有字典里了

    三.改:

     dic[key]= '******'

     dic.update = #不等于  update(name,'sss')      #不对

    #正确书写  dic.update(name='liuer' , age = 15)  有则改之,无则添之

      dic,updat(dic1)    # 换成字符串的形式 ,所以可以

    #
    dic= {
        'name':'alex',
        'age':18,
    }
    dic['name'] = 'liuer'
    print(dic)
    dic['name'] = ['liuer' , 'liusan ']
    print(dic)
    # 错误 因为 name 和 不是逗号
    # dic.update(name,'wanger')
    # 有也不改
    print(dic)
    dic= {
        'name':'alex',
        'age':18,
    }
    
    # 正确写法
    #没有dic 等于   dic.update()  # 有则改之 无责添之   级别高 后者改前面
    dic.update(name = 'wanger' , money = 11000)
    print(dic)
    dic= {
        'name':'alex',
        'age':18,
    }
    dic1= {
        'name':'liuer',
        'high':180,
        'language':'python'
    }
    #不对 这是 update 的作用 记错了
    # dic = dic1.update(dic)
    # 正确书写
    dic.update(dic1)
    print(dic)

    四.查:

      dic[key]  没有此键,报错

      dic.get[key]  有就返回 没有就返回None  

      for 循环

    #
    print(dic['name'])
    print(dic.get('name' , None))
    
    '''
    dic = {
        'name_list': ['博哥', '菊哥', 'b哥', 'alex'],
        'barry': {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    }

    五.字典的值键三种方法:

      1.dic.keys (= dic 使用for 循环的时候)

    dic = {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    for i in dic:
        print(i)
    
    # dic.keys() 类似于list的容器类类型 高仿列表  元组
    ret = dic.keys()
    print(ret, type(ret))
    for key in ret:
        print(key)
    print(ret[0])
    # 可以转化成list
    print(list(ret))

         2.dic.values

    dic.values()
    print(dic.values())
    # 转化成list
    print(list(dic.values()))
    for v in dic.values():
        print(v)

      3.dic.items

    print(dic.items())
    print(list(dic.items()))
    
    for i in dic.items():
        print(i)

                        面试题:分别赋值  

    a, b = (1, 2)
    print(a,b)
    a, b, c = (1, 2, 3)
    print(a,b,c)
    a, b = 100, 1000
    a, b = [100, 1000]
    a, b = {'name':'alex', 'age': 73}
    print(a,b)
    分别赋值——————精确讲解dit.items()的含义
    a = 18
    b = 32
    a, b = b, a
    print(a,b)
    print(dic.items())
    for k,v in dic.items():
        '''
        k,v =     ('name', '太白金星')
        k,v =     ('age', 18)
        k,v =     ('hobby', 'wife')
        '''
        print('这是键:', k)
        print('这是值:', v)
    d = dic.fromkeys([1,2,3],'值')
    print(d) # 不可变 类型 没坑
    有可变类型 有坑
    d = dic.fromkeys([1,2,3],[])
    d[1].append(33)
    print()
    {1:33 , 2:33 , 3:33}

    d = dic.fromkeys([1,2,3],10)
    print(d)
    d[1] = 20
    print(d)

    一个杯子  可以装水   大家都用   ----->     可变      都变        不可变的  别的不变 只改可变的

    不可变的又建立了一个 内存地址  a  = 10  a = 20   两个地址

    字典的嵌套:dic[][]

    实例:

    # 1,给这个列表['博哥', '菊哥', 'b哥', 'alex'] 追加一个元素 '老男孩'。
    # 2,将这个列表['博哥', '菊哥', 'b哥', 'alex']中的alex变成首字母大写。
    # 3,将这个键值对 'name': '太白金星' 的 '太白金星' 改成男神。
    # 4,给barry对应的小字典增加一个键值对: weight: 160
    '''
    dic = {
        'name_list': ['博哥', '菊哥', 'b哥', 'alex'],
        'barry': {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    }
    dic['name_list'].append('老男孩')
    #dic['name_list'] += '老男孩'
    # ['博哥', '菊哥', 'b哥', 'alex', '老', '男', '孩'],  不对
    print(dic)
    #  不会做因为 没有把改了的值 换到以前的位置
    dic['name_list'][3] = dic['name_list'][3].capitalize()
    print(dic)
    dic['barry']['name'] = '男神'
    print(dic)
    #  不对
    # dic['barry']['weight',16]
    # print(dic)
    #  一般方法 找位置 赋值 增加  或者  更改  一样用
    dic['barry']['weight'] = 12
    print(dic)
    #  函数方法  ,  使用(object,'')
    #  这样就添加了 不大懂 
    dic['barry'].setdefault('weight',16)
    print(dic)

      dic['keys'] 可能列表操作.append()

    dic = {}

    dic1 = dic.fromkeys(iter, object)

    a = d.fromkeys([1,2,3],'str')
    # print(id(a[1]),id(a[2]))#内存地址不同  改变一个其它肯定不变
    {1: 'str', 2: 'str', 3: 'str'}
    lis = ['alex','wusir','太白']
    a = d.fromkeys(lis,[])
    a['alex'] = 1

    {'alex': [], 'wusir': [], '太白': []}
    {'alex': 1, 'wusir': [], '太白': []}

  • 相关阅读:
    jQuery
    基于Js实现的UrlEncode和UrlDecode函数代码
    利用缓存、Timer间隔时间发送微信的实例,很有用的例子
    VisualStudio 自动排版等 快捷键
    正则表达式判断手机号码属于哪个运营商
    .Net常用方法汇总
    .NET中的三种Timer的区别和用法
    C# List和String互相转换
    Tempdb--TempDB Basic
    Tempdb--查看tempdb使用的脚本
  • 原文地址:https://www.cnblogs.com/Doner/p/10482541.html
Copyright © 2011-2022 走看看