• 字典、字典嵌套


    1、字典是python中的数据类型之一、唯一一种大括号{}键值对的数据。

    2、存储大量的数据、将数据和数据之间进行关联。

    3、通过键可以准确的找到值

    4、哈希:可变数据类型就不可哈希

          不可变数据类型可哈希

    5、字典的键要求:不可变数据类型(可哈希)、唯一(字典中键只能存在一个)

     字典的值:任意、重复的话后面的值会覆盖前面的值。

    6、字典的增:

    dic["键"] = "值"

    setdefault("meet",18)  参数1:键  参数2:值、字典中键不存在时添加、存在时不进行添加、

                1、先通过键去字典中查找、返回的值是None、才会执行第二步。

                2、将键和值添加到字典中。

                3、键存在时返回键对应的值

                4、键和值添加成功后返回的是添加的值

    7、字典的删除:

    clear()--清空

    pop()删除加参数字典的键、有返回值、返回的是被删除的键对应的值

    popitem python3版本中随机删除最后一个

    del dic 删除整个字典、加参数写法:del dic["键"]

    字典中没有remove

    8、字典的修改:

    dic["键"] = "值"  #暴力增加:当键在字典中存在时就修改、不存在时增加

    dic.update(字典)#update中的字典级别高于点前面的字典

    9、字典的查:通过键查找值(暴力查找)、键存在时返回键对应的值、键不存在时就报错。

    print(dic.get["key","没有找到啊"])  #通过键查找值、存在时返回键对应的值、不存在时返回None、通过get可以自定义返回值/内容。

    print(dic.keys())        #keys获取字典中所有的键、高仿列表可以for循环、但是不能通过索引取值、高仿列表可以迭代。

    print(dic.values())       #获取字典中所有的值

    print(dic.items())

    print(setdefault(键))

    10、解构:字典是无序的、python3.6版本以上显示时按照定义顺序去显示。

    字典用list转成列表去进行索引查找

    items()获取字典中所有的键值以元组的形式

    解构一:

    a,b = 1020
    print(a)
    print(b)
    解构图解:
    a = 10
    b = 20
    a,b = b,a

    解构二:
    a,b = "你好"
    print(a)
    print(b)
    11、聚合:
    a,b,*c = [1,2,3,4,5,6,7]
    print(a,b)
    12、字典的嵌套:查找时通过键进行查找、一层一层查找。
    13、字典和列表的区别:字典查找顺序是方便、字典查找速度快。
    作业题:
    #14、请将列表中的每个元素通过 "_" 链接起来。
    users = ['西游记','红楼梦','三国演义']
    print("_".join(users))
    #15、请将列表中的每个元素通过 "_" 链接起来。
    users = ['秀色可餐','岳新力',666,'孙一帆']
    users[2] = str(users[2])
    print("_".join(users))
    #16、请将元组 v1 = (11,22,33) 中的所有元素追加到列表 v2 = [44,55,66] 中。
    v1 = (11,22,33)
    v2 = [44,55,66]
    v2.extend(v1)
    print(v2)
    #17、请将元组 v1 = (11,22,33,44,55,66,77,88,99) 中的所有偶数索引位置的元素 追加到列表v3 = [44,55,66]
    #for循环添加
    v1 = [11,22,33,44,55,66,77,88,99]
    v3 = [44,55,66]
    for i in v1:
    if v1.index(i) % 2 == 0:
    v3.append(i)
    print(v3)
    # extend添加
    v3.extend(v1[::2])
    print(v3)
    #18、将字典的键和值分别追加到 key_list 和 value_list 两个列表中,如:
    info = {'k1':'v1','k2':'v2','k3':'v3'}
    key_list = []
    value_list = []
    for k,v in info.items():
    key_list.append(k)
    value_list.append(v)
    print(key_list)
    print(value_list)
    #19、字典dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
    dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
    # a. 请循环输出所有的key
    for k,v in dic.items():
    print(k)
    # b. 请循环输出所有的value
    for k,v in dic.items():
    print(v)
    # c. 请循环输出所有的key和value
    for i in dic.items():
    print(i)
    # d. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
    dic["k4"] = "v4"
    print(dic)
    # e. 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
    dic["k1"] = "alex"
    print(dic)
    # f. 请在k3对应的值中追加一个元素 44,输出修改后的字典
    dic["k3"].append("44")
    print(dic)
    # g. 请在k3对应的值的第 1 个位置插入1个元素 18,输出修改后的字典
    dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
    dic["k3"].insert(1,18)
    print(dic)
    #20、有如下字典,请按照以下的需求对字典进行操作
    av_catalog = {
    "欧美":{
    "www.宝元.com": ["很多免费的,世界最大的","质量一般"],
    "www.alex.com": ["很多免费的,也很大","质量挺好"],
    "oldboy.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
    "hao222.com":["质量很高,真的很高","全部收费,屌丝请绕过"]
    },
    "日韩":{
    "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]
    },
    "大陆":{
    "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    }
    }
    # a.给此 ["很多免费的,世界最大的","质量一般"]列表第二个位置插入一个元素:'量很大'。
    av_catalog["欧美"]["www.宝元.com"].insert(2,"量很大")
    print("插入一个元素",av_catalog)
    # b.将此 ["质量很高,真的很高","全部收费,屌丝请绕过"]列表的 "全部收费,屌丝请绕过" 删除。
    av_catalog["欧美"]["hao222.com"].pop(1)
    print("删除",av_catalog)
    # c.将此["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]列表的 "verygood"全部变成大写。
    av_catalog["日韩"]["tokyo-hot"][1] = av_catalog["日韩"]["tokyo-hot"][1].upper()
    print("全部变成大写",av_catalog)
    # d.给 '大陆' 对应的字典添加一个键值对 '1048' :['一天就封了']
    av_catalog["大陆"][1048] = ['一天就封了']
    print("添加键值对一天就封了",av_catalog)
    # e.删除这个键值对:"oldboy.com": ["多是自拍,高质量图片很多","资源不多,更新慢"]
    av_catalog["欧美"].pop("oldboy.com")
    print("删除键值对oldboy.com",av_catalog)
    # f.给此["全部免费,真好,好人一生平安","服务器在国外,慢"]列表的第一个元素对应的字符串,加上一句话:'可以爬下来'
    av_catalog["大陆"]["1024"][0] = av_catalog["大陆"]["1024"][0] + "可以爬下来"
    print("可以爬下来",av_catalog)
    #21、请循环打印k2对应的值中的每个元素。
    info = {'k1':'v1','k2':[('alex'),('wupeiqi'),('oldboy')],}
    info = {'k1':'v1','k2':[('alex'),('wupeiqi'),('oldboy')],}
    for i in info["k2"]:
    print(i)
    #22、有字符串"k: 1|k1:2|k2:3 |k3 :4" 处理成字典 {'k':1,'k1':2,'k3':4}
    s = "k : 1 | k1 : 2 | k2 : 3| k3 : 4"
    dic = {}
    for i in s.replace(" ","").split("|"):
    k,v = i.split(":")
    dic[k] = v
    print(dic)
    # 23、有如下值 li= [11,22,33,44,55,77,88,99,90] ,将所有大于 66 的值保存至字典的第一个key对应的列表中,将小于 66 的值保存至第二个key对应的列表中。result = {'k1':[],'k2':[]}
    result = {'k1':[],'k2':[]}
    li = [11,22,33,44,55,77,88,99,90]
    for i in li:
    if i > 66:
    result["k1"].append(i)
    else:
    result["k2"].append(i)
    print(result)
    # 24、看代码写结果
    v = {}
    for index in range(10):
    v['users'] = index
    print(v)
    #结果:{'users': 9}
    #25、输出商品列表,用户输入序号,显示用户选中的商品
    """
    # 商品列表:
    # goods = [
    # {"name": "电脑", "price": 1999},
    # {"name": "鼠标", "price": 10},
    # {"name": "游艇", "price": 20},
    # {"name": "美女", "price": 998}
    # ]
    # 要求:
    # 1:页面显示 序号 + 商品名称 + 商品价格,如:
    # 1 电脑 1999
    # 2 鼠标 10
    # ...
    # 2:用户输入选择的商品序号,然后打印商品名称及商品价格
    # 3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    # 4:用户输入Q或者q,退出程序。
    """
    goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998}
    ] #1、首先把商品放在货架上
    shopping_car = {} #15、接下来设置购物车空字典
    print('欢迎光临!') #2、接下来有个欢迎的语句
    while True: #23、加不断的循环
    money = input('让我看看你的钱输入Q或者q,退出程序:').strip() #3、接下来定义钱并点strip下去除空白
    if money.isdigit() and int(money) > 0: #4、接下来判断钱是数字还是字母是否大于0
    while True: #20、再加下不断循环
    for i,k in enumerate(goods): #5、接下来循环货架用到枚举、循环货架里面的所有商品以及价格
    print('序号{},商品{},价格{}'.format(i + 1,k['name'],k['price'])) #6、接下来用到字符串拼接、
    choose = input('请输入你要购买的商品序号:') #7、接下来设置买家购买的序号
    if choose.isdigit() and int(choose) < len(goods): #8、接下来判断输入的商品序号,
    num = input('你要购买的商品数量') #10、接下来设置输入的商品数量
    if num.isdigit(): #11、再接着判断数量是数字
    if int(money) > goods[int(choose)]['price'] * int(num): #12、接下来判断钱是否够购买东西
    money = int(money) - goods[int(choose)]['price'] * int(num) #13、这一步是剩余的钱等于总共的钱减去已经购买的商品价格乘以数量
    if goods[int(choose)]['name'] in shopping_car: #16、接下来判断购买的商品是否在购物车里面
    shopping_car[goods[int(choose)]['name']] = shopping_car[goods[int(choose)]['name']] + int(num)#18、购买的商品名字等于
    else:
    shopping_car[goods[int(choose)]['name']] = int(num) #17、否则回调不在的话选择的名字等于选择的数量
    print('购物车中的商品有{},你的余额有{}'.format(shopping_car,money))#19、最后再告诉下购物车中的状况
    else:
    print('钱不够,回去') #14、设置钱不够的结果
    break #20、加下中断
    else:
    print('输入序号有误,请重新输入,') #9、回调出否则的结果
    if money.upper() == "Q": #21、如果是Q就退出
    break
    else: #22、打印输入有误的
    print("输入有误:")
  • 相关阅读:
    stm32 IO模式
    stm32的ADC
    bsp
    stm32的硬件调试设置
    RTC实时时钟
    快手2019笔试题 “回文子串" 解题思路
    C++内存修改器开源代码
    FC游戏修改教程(hack)小白文。
    GLFW+GLEW搭建opengl环境(备忘)
    8086 IO读写操作
  • 原文地址:https://www.cnblogs.com/zhang-da/p/11584518.html
Copyright © 2020-2023  润新知