• python全栈-Day 5


    一、字典dict初始

    1、字典是Python中唯一的一个映射数据类型,由键(key)值(value)对组成

    2、数据类型划分:可变数据类型(list、dict、set(集合))--不可哈希,不可变数据类型(int、str、tuple、bool)--可哈希

    3、其中set(集合) 只有本身可变,集合的元素不可变

    4、字典的key必须是不可变数据类型,字典的value可以是任意类型

    5、字典的优势:

    • 列表是按照顺序轮询查找,字典是二分查找,比较快速(比如 猜数字)
    • 储存大量的关系型数据
    • 特点:字典是无序,没有索引的(3.5及其之前的版本),3.6增加了一个新的特性,可以有序
      dic = {
          'name':['wangjing','xiao','xiaoxi'],
          'py9':{'num':71,
                 'ave_age':23},
          (1,2,3):'wuyuyu',
          2:'haha',
          True:1
      }
      print(dic)

    二、字典dict的增删改查 

    #增
    dic = {'name':'wangjing','age':18,'sex':'girl'}
    dic['height'] = 155  #没有的键值对,直接复制添加
    dic.setdefault('weight')  #没有的键值对,直接添加;默认value为None
    dic.setdefault('weight',150)  #已有的键值对,不做操作
    
    #删
    dic = {'name':'wangjing','age':18,'sex':'girl'}
    dic.pop('sex')  #按照键值删除,删除不存在的键则会报错
    dic.pop('haha',None)
    print(dic.pop('haha',None))  #可设置返回值,删除不存在的键会输出返回值,删除存在的键会输出其value
    print(dic)
    
    dic = {'name':'wangjing','age':18,'sex':'girl'}
    dic.popitem()  #删除最后一个键值对(3.5及其之前版本为随机删除,因为它是无序的)
    print(dic.popitem())  #返回值为删除的键值对的元组格式
    print(dic)
    
    dic = {'name':'wangjing','age':18,'sex':'girl'}
    dic.clear()  #清空字典
    print(dic)
    
    dic = {'name':'wangjing','age':18,'sex':'girl'}
    del dic['name']  #删除
    print(dic)
    
    #改
    dic = {'name':'wangjing','age':18,'sex':'girl'}
    dic1 = {'name':'wangxiao','age':20,'height':175}
    dic['age'] = 20  #没有的键值对,值被覆盖
    dic1.update(dic)  #将参数dic的字典的所有键值对覆盖更新到 dic1中(有则更新,无则添加)
    print(dic)
    print(dic1)
    
    
    #查
    dic = {'name':'wangjing','age':18,'sex':'girl'}
    print(dic['name'])  #通过key查询,如果key不存在则会报错
    print(dic.keys(),type(dic.keys()))   #返回值类型为dict_keys类型,可以当成列表使用
    print(dic.values(),type(dic.values()))  #返回值类型为dict_values类型,可以当成列表使用
    print(dic.items(),type(dic.items()))  #返回值类型为dict_items类型,可以当成元组使用
    
    dic = {'name':'wangjing','age':18,'sex':'girl'}
    for i in dic:
        print()  #默认打印键
    
    for i in dic.keys():
        print(i)  #默认打印键
    
    for i in dic.values():
        print(i)  #默认打印值
    
    for i in dic.items():
        print(i)  #默认打印键值组成的元组
    
    dic = {'name':'wangjing','age':18,'sex':'girl'}
    print(dic.get('name'))  #通过key查询,如果key不存在则会输出None
    print(dic.get('name1','此键不存在'))

    三、字典dict的其他使用方法

    1、python存储的内容有:内存地址及存储值+名称空间(名称和空间的指向关系)

    #面试题
    a,b = 1,2
    print(a,b)
    a,b = [1,2]
    print(a,b)
    a,b = [[1,2],(3,4,5)]
    print(a,b,type(a),type(b))
    
    a,b = b,a  #一行代码交换a,b的值
    print(a,b)
    

     2、以上面试题结合字典 扩展使用

    dic = {'name':'wangjing','age':18,'sex':'girl'}
    for k,v in dic.items():
        print(k,v)  #用两个变量分别接收字典的key和value

    四、dict嵌套

    dic = {
        'name':['alex','wusir','wangjing','taibai','汪晓'],
        'py9':{
            'begin_time':'1213',
            'money':500,
            'time':30,
            'address':'浙江杭州'
        },
        'age':21
    }
    
    
    dic['age'] = 56
    dic['name'].append('haha')
    dic['name'][2] = dic['name'][2].upper()
    dic['py9']['girls'] = 5
    
    print(dic)
    

    课后作业

    #一个字符串中,有多少个数字
    info = input('>>>')  #afs1fdfh23fg65h1jhg1235435
    for i in info:
        if i.isalpha():
            info = info.replace(i,' ')
            print(info)
    l = info.split()
    s = ''.join(l)
    print(len(s))
    
    '''
    1、如下值,li = [11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将所有小于66的值保存到第二个key中
    '''
    # li = [11,22,33,44,55,66,77,88,99,90]
    # dic = {}
    # big = []
    # small = []
    #
    # for i in li:
    #     if i > 66:
    #         big.append(i)
    #     elif i < 66:
    #         small.append(i)
    #     else:
    #         continue
    # dic.setdefault('k1',big)
    # dic.setdefault('k2',small)
    # print(dic)
    
    '''
    2、输出商品列表,用户输入序号,显示用户选中的商品
        商品 li = ["手机", "电脑", '鼠标垫', '游艇']
    要求:1:页面显示 序号 + 商品名称,如:
          	1 手机
    	   	2 电脑
         		 …
         2: 用户输入选择的商品序号,然后打印商品名称
      3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    4:用户输入Q或者q,退出程序。
    
    '''
    # li = ["手机", "电脑", '鼠标垫', '游艇']
    # goods = {}
    # for i in range(len(li)):
    #     print(i + 1, li[i])
    #     goods[i+1] = li[i]
    # while 1:
    #     buy_goods = input('请输入您想要购买的商品序号:')
    #     if buy_goods == '1':
    #         print(goods[1])
    #     elif buy_goods == '2':
    #         print(goods[2])
    #     elif buy_goods == '3':
    #         print(goods[3])
    #     elif buy_goods == '4':
    #         print(goods[4])
    #     elif buy_goods.upper() == 'Q':
    #         break
    #     else:
    #         print('您的输入有误,请重新输入')
    # print(goods)
    
    li = ["手机", "电脑", '鼠标垫', '游艇']
    for i in li:
        print('{}	{}'.format(li.index(i)+1,i))  #print(li.index(i)+1,i)
    while 1:
        buy_goods = input('请输入您想要购买的商品序号:')
        if buy_goods.isdigit() == True and int(buy_goods) > 0 and int(buy_goods) <= len(li):
            print(li[int(buy_goods)-1])
        elif buy_goods.upper() == 'Q':
            break
        else:
            print('您的输入有误,请重新输入
    ')
    
  • 相关阅读:
    R vs Python:构建data.frame、读取csv与统计描述
    R语言学习笔记:使用reshape2包实现整合与重构
    Python学习笔记:lambda表达式
    Python学习笔记:startswith & endswith 判断开头结尾是否为指定字符串
    Python学习笔记:一手漂亮的Python函数
    电信行业数据挖掘分析
    Oracle学习笔记:实现select top N的方法
    Oracle学习笔记:ORA-22992 cannot use LOB locators selected from remote tables
    Linux学习笔记:ls和ll命令
    vb常用命名空间
  • 原文地址:https://www.cnblogs.com/txbbkk/p/9303040.html
Copyright © 2020-2023  润新知