• python dict(字典)


    补充知识点1:

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

      可变数据类型:     元组,bool,int,str      --可哈希

      不可变数据类型:  list,dict,set                --不可哈希 

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

    dict value:可以是任意数据类型

    dict优缺点:①利用效率高的二分查找法查询数据  ②可以储存大量的关系型数据  ③Python3.5版本(包括此版本)之前,字典是无序的。在Python3.6版本之后,字典按照初建字典时的顺序排列。缺点:内存消耗巨大。

        字典的常用操作方法    

    1.增

      ①通过键值对添加(无key添加,有key则value覆盖)

      ②setdefault(无key添加,有key跳过;有返回值)

    dic1 = {'name': '太白',  'age': 18}
    # 通过键值对直接增加,有key则覆盖值
    dic1['weight'] = 65
    dic1['name'] = 'jin-xin'
    print(dic1)  # {'name': 'jin-xin', 'age': 18, 'weight': 65}
    
    dic2 = {'name': '太白',  'age': 18}
    # setdefault 无key添加,有key跳过;有返回值
    dic2.setdefault('height', 180)
    dic2.setdefault('name', 'alex')
    print(dic2)  # {'name': '太白', 'age': 18, 'height': 180}
    print(dic2.setdefault('name'))  # 太白
    View Code

    2.删

      ①pop(通过key删除键值对;有返回值)

      ②popitem(删除最后一个(3.6版本之后);有返回值)

      ③lcear(清空)

      ④del(删除)

    dic1 = {'name': '太白',  'age': 18, 'height': 180}
    # pop  通过key删除键值对;有返回值
    print(dic1.pop('name'), dic1)  # 太白 {'age': 18, 'height': 180}
    
    # popitem  删除最后一个(3.6版本之后);有返回值
    print(dic1.popitem(), dic1)  # ('height', 180) {'age': 18}
    
    # clear 清空
    dic1.clear()
    print(dic1)  # {}
    
    dic2 = {'name': '太白',  'age': 18, 'height': 180}
    # del 删除
    del dic2['name']
    print(dic2)  # {'age': 18, 'height': 180}
    del dic2
    print(dic2)  # 报错
    View Code

    3.改

      ①通过key直接更改

      ②update

    dic = {'name': '太白',  'age': 18}
    # 通过key直接更改
    dic['name'] = 'alex'
    print(dic)  # {'name': 'alex', 'age': 18}
    
    # update
    dic.update(age=22, height=180)
    print(dic)  # {'name': 'alex', 'age': 22, 'height': 180}
    dic.update([(1,'a'), (2, 'b')])
    print(dic)  # {'name': 'alex', 'age': 22, 'height': 180, 1: 'a', 2: 'b'}
    
    dic1 = {1: 'a', 2: 'b', 3: 'c'}
    dic2 = {2: 'b', 3: 't', 4: 'd'}
    dic2.update(dic1)  # 字典1添加/替换到字典2中,有key覆盖value,无key添加键值对
    print(dic1)  # {1: 'a', 2: 'b', 3: 'c'}
    print(dic2)  # {2: 'b', 3: 'c', 4: 'd', 1: 'a'}
    View Code

    4.查

      ①通过key查询

      ②get

      ③keys   values  itmes

    dic = {'name': '太白',  'age': 18}
    # 通过key查询
    print(dic['name'])  # 太白
    
    # get 有返回值(可设置)
    print(dic.get('name'))  # 太白
    print(dic.get('height'))  # None
    
    # keys  values  items
    print(dic.keys())  # dict_keys(['name', 'age'])
    print(dic.values())  # dict_values(['太白', 18])
    print(dic.items())  # dict_items([('name', '太白'), ('age', 18)])
    View Code

    补充知识点2:分别赋值,也叫拆包

    a = 1
    b = 2
    print(a, b)  # 1 2
    a, b = b, a
    print(a, b)  # 2 1
    
    a, b = (123, 321)
    print(a, b)  # 123 321
    a, b = ['age', 'high']
    print(a, b)  # age high
    a, b = {'name': 'zzl', 'age': 22}
    print(a, b)  # name age
    View Code

    相关练习题:

    如有下列物品:1:手机, 2:电脑, 3:鼠标垫, 4:游艇
    # 创建一个用户查询程序: 1.用户输入相应序号,输出对应物品名称;如果没有则提示输入有误
    # 2.用户输入列表或list展示所有:序号 物品
    # 如:1 手机
    # 2 电脑
    # 3 鼠标垫
    # ...
    # 3.用户输入Q或q退出程序
    dic = {1: '手机', 2: '电脑', 3: '鼠标垫', 4: '游艇'}
    
    while 1:
        uaers_in = input('请输入序号查询商品(查看商品列表请输入列表/list;输入Q/q退出):')
        if uaers_in == 'list' or uaers_in == '列表':
            for k, v in dic.items():
                print(k, v)
        elif uaers_in == 'Q' or uaers_in == 'q':
            print('---程序已退出!---')
            break
        else:
            print(dic.get(int(uaers_in), '输入有误,请重新输入'))
    View Code
    flag = True
    while flag:
        li = ["手机", "电脑", "鼠标垫", "游艇"]
        for i in li:
            print('{}		{}'.format(li.index(i)+1,i))
        num_of_chioce = input('请输入选择的商品序号/输入Q或者q退出程序:')
        if num_of_chioce.isdigit():
            num_of_chioce = int(num_of_chioce)
            if num_of_chioce > 0 and num_of_chioce <= len(li):
                print(li[num_of_chioce-1])
            else:print('请输入有效数字')
        elif num_of_chioce.upper() == 'Q':
            break
        else:
            print('请输入数字')
    View Code
  • 相关阅读:
    生成器
    装饰器
    类的特殊方法
    获取对象的信息之反射
    获取对象信息之内置函数dir()
    获取对象的信息之内置函数type()
    获取对象的信息之内置函数issubclass() 和 isinstance()
    生成可下载图片
    js数组常用方法
    sql存储过程基本语法
  • 原文地址:https://www.cnblogs.com/zhuzl/p/11129396.html
Copyright © 2020-2023  润新知