• Python学习


    1、字典综述

      数据类型划分:可变数据类型  不可变数据类型

      可变数据类型(不可哈希):list  dict  set

      不可变数据类型(可哈希):元祖  bool  int  str

      dict  key  必须是不可变数据类型,可哈希

           value  任意数据类型

      dict  优点:二分法查询

              存储大量的关系型数据

          缺点:无序的(3.5及以前的版本)

    2、字典的操作

      1)增

        直接操作:没有键值对时则添加  有键值对时覆盖原数据

        setdefault('name','Shark'):没有键值对时则添加  有键值对时不操作

    dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
    #   增:
    dic1['high'] = 185  #没有键值对,添加
    dic1['age'] = 16  #如果有键,则值覆盖
    
    dic1.setdefault('weight')  # 有键值对,不做任何改变,没有才添加。
    dic1.setdefault('weight',150)
    dic1.setdefault('name','二哥')
    print(dic1)

      2)删

        pop()  有返回值,可按返回的键值删除字典数据

        pop('Shark',None)  没有键值对时,后面的数据不写会报错

        popitem()  有返回值,返回元祖,随机删除键值对

        clear()  清空字典

        del dic1['name']  删除单条数据,没有此键时会报错

        del dic1  删除字典

    dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
    #
    print(dic1.pop('age'))   # 有返回值,按键去删除
    print(dic1.pop('二哥',None))   # 可设置返回值
    print(dic1)
    
    print(dic1.popitem())  # 随机删除 有返回值 元组里面是删除的键值。
    # print(dic1)
    
    del dic1['name1']
    print(dic1)
    del dic1
    print(dic1)
    
    dic1.clear() #清空字典

      3)改

        直接改

        update()

    dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
    #  改  update
    dic1['age'] = 16
    
    dic = {"name":"jin","age":18,"sex":"male"}
    dic2 = {"name":"alex","weight":75}
    dic2.update(dic)  # dic2更新,有的数据覆盖,没有的添加
    
    print(dic)
    print(dic2)

      4)查

        直接查:没有此键会报错

        dic1.get()

        dic1.key()    打印键值

        dic1.values()    打印数值

        dic1.items()   打印键值对(元祖)

    dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
    #
    print(dic1.keys(),type(dic1.keys()))
    print(dic1.values())
    print(dic1.items())
    
    for k,v in dic1.items():
        print(k,v)
    
    v1 = dic1['name']
    print(v1)
    
    v2 = dic1['name1']  # 报错
    print(v2)
    
    print(dic1.get('name1','没有这个键'))

    3、面试题

      用一行代码实现数据的交换

    #   用一行代码实现数据的交换
    a,b = 1,2
    print(a,b)
    
    a,b = b,a
    print(a,b)

    4、相关练习

    tu = (
        'alex',
        [
            11,
            22,
            {
                'k1':'v1',
                'k2':[
                    'age',
                    'name'
                ],
                'k3':(11,22,33)
            },
            44
        ]
    )
    
    #   a)讲述元祖的特性
    # 元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。
    # Python 的元组与列表类似,不同之处在于元组的元素不能修改。
    # 元组使用小括号,列表使用方括号。
    # 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
    
    #   b)请问tu变量中的第一个元素'alex'是否可被修改?
    #   不可以
    
    #   c)请在元祖tu中添加一个元素'Seven'
    li = tu[1][2]['k2']
    li.append('Seven')
    tu[1][2]['k2'] = li
    print(tu[1][2]['k2'])
    dic = {
        'k1':'v1',
        'k2':'v2',
        'k3':[11,22,33]
    }
    
    #   a)请循环输出所有的key
    for k in dic:
        print(k)
    
    #   b)请循环输出所有的value
    for k in dic:
        print(dic[k])
    
    #   c)请循环输出所有的 key 和 value
    for k in dic:
        print(k,dic[k])
    
    #   d)请在字典中添加一个键值对,'k4':'v4',输出添加后的字典
    dic.setdefault('k4','v4')
    print(dic)
    
    #   e)请在修改字典中'k1'对应的值为'alex',输出修改后的字典
    dic['k1'] = 'alex'
    print(dic)
    
    #   f)请在k3对应的值中追加一个元素44,输出修改后的字典
    li = dic['k3']
    li.append(44)
    dic['k3'] = li
    print(dic)
    
    #   f)请在k3对应的值的第1个位置插入元素18,输出修改后的字典
    lis = dic['k3']
    lis.insert(0,18)
    dic['k3'] = lis
    print(dic)
    li = [11,22,33,44,55,66,77,88,99,90]
    #   将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中
    
    dic = { }
    more = []
    less = []
    for i in li:
        if i >= 66:
            more.append(i)
        else:
            less.append(i)
    dic.setdefault('k1',more)
    dic.setdefault('k2',less)
    print(dic)
    #   输出商品列表,用户输入序号,显示用户选中的商品
    #   商品 li = ["手机", "电脑", '鼠标垫', '游艇']
    #   要求:1:页面显示 序号 + 商品名称,如:
    #       1 手机
    #            2 电脑
    #
    #       2: 用户输入选择的商品序号,然后打印商品名称
    #       3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    #       4:用户输入Q或者q,退出程序。
    
    li = ['手机','电脑','鼠标垫','游艇']
    dic = {}
    for i in range(len(li)):
        dic.setdefault(i+1,li[i])
    for k in dic:
        print(k,dic[k])
    
    for n in dic:
        num = input('请输入您的选择:').strip()
        if num.isalpha():
            if num.upper() == 'Q':
                break
        elif num.isdigit():
            if int(num) == n:
                print(dic[n])
                break
            else:
                print('您的商品只有火星才有,本宝宝委屈。。。')
                continue
  • 相关阅读:
    如何在myeclipse上使用git(码云)
    myeclipse使用git图文教程
    内存buffer转换为多维数组访问
    fd究竟是何方神圣
    getline c实现
    TLB初始化 Missing Handler,MIPS R3K mips_init_tlb
    Ubuntu 16.04 风扇特别响解决办法
    MySQL安装与卸载
    linux项目环境部署入门
    MySQL入门笔记一
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/9337635.html
Copyright © 2020-2023  润新知