zoukankan      html  css  js  c++  java
  • Python 字典增删查改 嵌套

    一. 字典的简单介绍
    字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是
    唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后将key-value保存在这个地址中.
    这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key'必须是可hash的,
    如果你搞不懂什什么是可哈希, 暂时可以这样记, 可以改变的都是不可哈希的,
    那么可哈希就意味着不可变. 这个是为了了能准确的计算内存地址而规定的.
    已知的可哈希(不可变)的数据类型: int, str, tuple, bool
    不可哈希(可变)的数据类型: list, dict, set
    语法 :
    {key1: value1, key2: value2....}
    注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据

    2.字典dic,
    dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
    a.请循环输出所有的key
    for i in dic:
    print(i)
    b.请循环输出所有的value
    for i in dic:
    print(dic[i])
    c.请循环输出所有的key和value
    for k,v in dic.items():
    print(k)
    print(v)

    d.请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
    dic["k4"] = "v4"
    print(dic)

    e.请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
    dic["k1"] = "alex"
    print(dic)

    f.请在k3对应的值中追加一个元素 44,输出修改后的字典
    d2 = dic["k3"].append(44)
    print(dic)

    g.请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字
    dic["k3"].insert(0,18)
    print(dic)

    a. 讲述元组的特性
    不可变的列表.又被成为只读列表.
    里面可以放任何数据类型的数据,查询可以.循环也可以.切片也可以.但就是不能改.

    b. 请问tu变量中的第一个元素 "alex" 是否可被修改?
    不可以,元组查询可以.循环也可以.切片也可以.但就是不能改.
    c. 请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 "Seven"
    print(type(tu[1][2]["k2"])) #<class 'list'>
    可修改 tu[1][2]["k2"].append("Seven")

    d. 请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 "Seven"
    print(type(tu[1][2]["k3"])) # <class 'tuple'> 元组不可以修改
    dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    a. 请循环输出所有的key
    for el in dic:
    print(el) # k1 k2 k3

    b. 请循环输出所有的value
    print(dic.values())

    c. 请循环输出所有的key和value
    for key, value in dic.items():
    print(key, value)

    d. 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
    dic.setdefault("k4", "v4")
    print(dic)

    dic['k4'] = "v4"
    print(dic)
    e. 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
    dic1 = {"k1": "alex"}
    dic.update(dic1)
    print(dic)

    dic['k1'] = "alex"
    print(dic)
    f. 请在k3对应的值中追加一个元素 44,输出修改后的字典
    dic["k3"].append(44)
    print(dic)

    g. 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
    dic["k3"].insert(0, 18)
    print(dic)


    3
    av_catalog = {
    "欧美": {
    "www.youporn.com": ["很多免费的,世界最大的", "质量一般"],
    "www.pornhub.com": ["很多免费的,也很大", "质量比yourporn高点"],
    "letmedothistoyou.com": ["多是自拍,高质量图片很多", "资源不多,更新慢"],
    "x-art.com": ["质量很高,真的很高", "全部收费,屌丝请绕过"]
    },
    "日韩": {
    "tokyo-hot": ["质量怎样不清楚,个人已经不喜欢日韩范了", "verygood"]
    },
    "大陆": {
    "1024": ["全部免费,真好,好人一生平安", "服务器在国外,慢"]
    }
    }
    a,给此 ["很多免费的,世界最大的","质量一般"]列表第二个位置插入一个 元素:'量很大'。
    av_catalog["欧美"]["www.youporn.com"].insert(1, "量很大")
    print(av_catalog)

    b,将此 ["质量很高,真的很高","全部收费,屌丝请绕过"]列表的 "全部收费,屌丝请绕过" 删除。
    del(av_catalog["欧美"]["x-art.com"][1])
    print(av_catalog)

    c,在此 ["质量很高,真的很高","全部收费,屌丝请绕过"]列表中添加"金老板最喜欢这个"。
    (av_catalog["欧美"]["x-art.com"]).append("金老板最喜欢这个.")
    print(av_catalog)

    d,将此["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]列表的 "verygood"全部变成大写。
    av_catalog["日韩"]["tokyo-hot"][1] = av_catalog["日韩"]["tokyo-hot"][1].upper()
    print(av_catalog)

    e,给'大陆' 对应的字典添加一个键值对 '1048' :['一天就封了']
    av_catalog["大陆"].setdefault("1048", "一天就疯了")
    print(av_catalog)

    f,删除此"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"]键值对。
    del (av_catalog["欧美"]["letmedothistoyou.com"])
    print(av_catalog)

    g,给此["全部免费,真好,好人一生平安","服务器在国外,慢"]列表的第一个元素,加上一句话:'可以爬下来'
    av_catalog["大陆"]["1024"].insert(0, "可以爬下来")
    # print(av_catalog)


    4
    有字符串 "k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....} (升级题)
    str1 = "k:1|k1:2|k2:3|k3:4"
    dic = {}
    str2 = str1.split("|")
    for c in str2:
    str3, str4 = c.split(":")
    dic[str3] = int(str4)
    print(dic)
    5
    有如下值li= [11,22,33,44,55,66,77,88,99,90],
    将所有大于 66 的值保存至字典的第一个key中,
    将小于 66 的值保存至第二个key的值中。
    即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
    li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
    k1 = []
    k2 = []
    dic = {}
    for el in range(len(li)):
    if (li[el]) < 66:
    k1.append((li[el]))
    elif (li[el]) > 66:
    k2.append((li[el]))
    dic['k1'] = k1
    dic['k2'] = k2
    print(dic)
    6
    goods = [{"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998}]
    # 1
    a = 0
    count = 1
    while count < 5:
    print("%d, %s, %s" % (count, goods[a]["name"], goods[a]["price"]))
    a += 1
    count += 1
    2 3 4
    while 1:
    yonghu = input("请输入序号(1-4)(输入Q退出):")
    if yonghu =="q"or yonghu == "Q":
    break
    elif int(yonghu) in [1, 2, 3, 4]:
    n = int(yonghu)-1
    a, b = goods[n].values()
    print(a, b)
    else:
    print("输入有误,请重新输入")
  • 相关阅读:
    2020年12月18日
    2020年12月17日
    2020年12月16日
    2020年12月15日
    2020年12月14日
    排序算法总结
    2020微软笔试题
    子串、子序列问题
    剑指offer题解(完结)
    ONOS 2.2安装
  • 原文地址:https://www.cnblogs.com/chcj/p/9839648.html
Copyright © 2011-2022 走看看