• python基础 day5 字典


    Day5笔记

    一、字典初识

    数据类型的分类:

    • 可变(不可哈希)的数据类型:列表(list)、字典(dict)、集合(set)
    • 不可变(可哈希)的数据类型:字符串(str)、布尔值( bool)整数(int)、元组(tuple)

    容器型数据类型:字典(dict)
    {}括起来,以键值对形式存储的容器型数据类型
    如下字典:
    'jason'、'carly'就是字典的键,键必须是不可变的数据类型,一般用int 和str
    [24, '男', 'worker'] 是字典的值,可以是任意数据类型

    dict1 = {
        'jason': [24, '男', 'worker'],
        'carly': [21, '女', 'student']
    }
    print(dict1)
    

    字典在3.5x版本之前是无序的
    字典在3.6x会按照初次建立字典的顺序排列,学术上不认为是有序的
    字典在3.7x以后都是有序的

    字典的优点:查询速度非常快,存储关联性的数据
    字典的缺点:以空间换时间

    1.字典的创建方式

    # 方式一
    dict1 = dict((('jason', 1), ('carly', 2), ('kobe', 3)))
    print(dict1)
    
    # 方式二
    dict2 = dict(jason=1, carly=2, kobe=3)
    print(dict2)
    
    # 方式三
    dict3 = dict({'jason': 1, 'carly': 2, 'kobe': 3})
    print(dict3)
    

    2.字典增删改查

    dic = dict({'name': 'jason', 'age': 24})
    
    # 1.直接增加 
    #有则改之,无则加之
    dic['sex'] = '男'
    dic['age'] = 888
    print(dic)
    
    
    # 2.setdefault()
    # setdefault()中的键有则不变,无则加之
    dic.setdefault('hobby', 'sleep')
    print(dic)
    

    dic = dict({'name': 'jason', 'age': 24})
    
    # 1.pop()
    # 按照键删除键值对,返回该键对应的值
    ret = dic.pop('age')
    print(ret)
    print(dic)
    # 设置第二个参数则无论字典中有无此键,都不会报错,并且返回的是设置的第二个参数
    ret1 = dic.pop('job', 'aloha')
    print(ret1)
    print(dic)
    
    
    # 2.del
    # 如果删除的键不存在,程序报错
    del dic['name']
    print(dic)
    del dic['job']
    print(dic)
    
    
    # 3.clear()
    # 清空字典中的内容
    dic.clear()
    print(dic)
    

    dic = dict({'name': 'jason', 'age': 18})
    
    # 方法一:和直接增加键值对方式一样,有则改之,无则加之
    dic['name'] = 'carly'
    print(dic)
    
    
    # # 方法二:update()
    # 1.update()可以跟多个键值对,字典中有的就修改,没有的就添加进去
    dic = dict({'name': 'jason', 'age': 18})
    dic.update(name='carly', height=175, hobby='sleep')
    print(dic) # 结果为 {'name': 'carly', 'age': 18, 'height': 175, 'hobby': 'sleep'}
    
    # 2.update()里面用由多个元组组成的列表,每一个元组就是一个键值对
    dic = {'name': 'jason', 'age': 18}
    dic.update([(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')])
    print(dic) # {'name': 'jason', 'age': 18, 1: 'a', 2: 'b', 3: 'c', 4: 'd'}
    
    # 3.update()可以将字典2更新到字典1中,若字典2中的键字典1中也有,则把字典1中该键对应的值改为字典2中的值
    							   # 若字典2中的键字典1中没有,则直接把该键值对添加到字典1中
    dic1 = {"name": "jason", "age": 18, "sex": "male"}
    dic2 = {"name": "carly", "weight": 75}
    dic1.update(dic2)
    print(dic1)  # {'name': 'carly', 'age': 18, 'sex': 'male', 'weight': 75}
    print(dic2)  # {'name': 'carly', 'weight': 75}
    

    dic = dict({'name': 'jason', 'age': 24, 'girl_friend': ['carly', '小红', '小花']})
    
    # 按照键查询(不常用)
    print(dic['girl_friend'])  # 如果没有这个键会报错,一般不用此方法
    
    
    # 1.get()  
    # (常用方法)# 如果字典中没有查询的键,则返回None,也可以自己设置返回值
    l1 = dic.get('girl_friend')
    l2 = dic.get('girl_friend1', '啥也没有')
    print(l1)
    print(l2)
    
    
    # 2. keys()
    print(dic.keys())  # 返回一个特殊的数据类型,包含所有的键
    print(list(dic.keys()))  # 可以转化成列表
    for key in dic.keys():  # 可以遍历循环
        print(key)
    for key in dic:  # 直接遍历循环字典,返回的也是所有的键
        print(key)
     
    
    # 3. values()
    print(dic.values())  # 返回一个特殊的数据类型,包含所有的键
    print(list(dic.values()))
    for value in dic.values():
        print(value)
        
    
    # 4. items()
    print(dic1.items())  # # 返回一个特殊的数据类型,包含所有的键值对
    for i in dic.items():  # 使用items() 遍历字典,返回的是一个个元组
        print(i)
    for key,value in dic.items():  # 使用元组的拆包遍历字典
        print(key, value)
    

    二、练习

    # 商品列表:
    goods = [
        {"name": "电脑", "price": 1999},
        {"name": "鼠标", "price": 10},
        {"name": "游艇", "price": 20},
        {"name": "美女", "price": 998}
    ]
    # 要求:
    # 1:页面显示 序号 + 商品名称 + 商品价格,如:
    #       1 电脑 1999
    #       2 鼠标 10
    #    ...
    # 2:用户输入选择的商品序号,然后打印商品名称及商品价格
    # 3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    # 4:用户输入Q或者q,退出程序。
    for i in goods:
        print(goods.index(i)+1, i.get('name'), i.get('price'))
    while 1:
        user_choose = input('请输入选择商品的序号:').strip()
        if user_choose.upper() == 'Q':
            break
        elif int(user_choose) <= len(goods):
            print(goods[int(user_choose)-1].get('name'), goods[int(user_choose)-1].get('price'))
        else:
            print('输入有误,重新输入')
    
    
  • 相关阅读:
    (2/24) 快速上手一个webpack的demo
    (1/24) 认识webpack
    module.exports 、exports、export、export default的区别
    Git同时提交到多个远程仓库
    @codeforces
    @loj
    @bzoj
    @loj
    @bzoj
    @bzoj
  • 原文地址:https://www.cnblogs.com/west-yang/p/12549585.html
Copyright © 2020-2023  润新知