zoukankan      html  css  js  c++  java
  • 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('您的输入有误,请重新输入
    ')
    
  • 相关阅读:
    BZOJ5212 ZJOI2018历史(LCT)
    BZOJ5127 数据校验
    253. Meeting Rooms II
    311. Sparse Matrix Multiplication
    254. Factor Combinations
    250. Count Univalue Subtrees
    259. 3Sum Smaller
    156. Binary Tree Upside Down
    360. Sort Transformed Array
    348. Design Tic-Tac-Toe
  • 原文地址:https://www.cnblogs.com/txbbkk/p/9303040.html
Copyright © 2011-2022 走看看