zoukankan      html  css  js  c++  java
  • Python_005(字典无极坑)

    一.字典(dict)

    1.字典的定义格式:dic{key1:value1,key2,value2}

    :这里面key是唯一的,保存的时候,根据key计算一个内存地址,然后将key-value保存在这个地址中,这种算法叫做hahs算法,

    这个key意味是不可变的,为了能够准确找到计算内存地址而规定的;value没有要求,可以保存任意类型的数据;

    :dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序保存的,而hash表不是连续的,所以不能进行切片,只能通过key来获取dict中的数据;

    二.字典的增删改查

    1.增加

    a.添加格式:dic[key] = 元素

    :直接添加,如果dic中没有出现这个key,就会新增一个key-value的组合进dic中

    :如果dic中已经有了这个key,就会直接覆盖上一个key对应的value的值!

    b.第二种添加的格式:dic.setdefault(key):若没有出现过key值,默认会自动创建一个key:None;

    :如果已经出现key值,那么setdefault将不起作用;

    :setdefault执行了两个步骤:

    (1).首先判断原来的字典中有没有这个key,如果没有,执行新增;如果有则不起作用

    (2).用这个key去字典中查询,返回查到的结果;

    代码展示:

    1 dic = {"疾风剑豪":"亚索","暴走萝莉":"拉克丝",}
    2 ret = dic.setdefault("疾风剑豪","诺手")
    3 print(dic)
    4 print(ret)
    5 #输出结果:{'疾风剑豪': '亚索', '暴走萝莉': '拉克丝'}
    6 亚索
    7 
    8 注意:这里ret的返回值是亚索,而不是诺手!
    关于setdefault

    2.删除

    a:ret = dic.pop(指定key值)指定key值删除,有返回值,返回value;

    b:del dic[key值]这个没有返回值;

    3.修改

    newdic.update(dic):把newdic中的内容更新到dic中,如果key重名,则修改替换,如果不存在key,则新增;

    4.查

    print(dic.get("key"):可以通过key来获取value值,如果key不存在,返回None

    print(di.get("key","value")):也可以添加一个value值;

    三.字典的相关操作

     1.dic.keys()可以拿到所有的key,返回key的集合,像是列表,但不是列表,是一个可迭代对象;

    :可以进行迭代循环:for key in dic.keys():print(key)打印所有的key值

    :for value in dic.values():print(value)打印所有的value值

    :for item in dic.items():print(item)打印所有的元素,以元组的形式出现;

    2.解构:把一个元组里面的元素赋值给前面的变量,这种方法叫做解构;

    例如:a,b = 1,2 print(a) a为1 若a = 1,2 print(a) a为(1,2)

    推导公式:for k,v in dic.items():print(k,v):得到是一个个元组构成的可迭代对象,元组里面是(key,value);

    讲解:你for item in dic.items(): print(item)你拿到的是由key和value组成的元组,元组可以进行结构k,v=(key,value)

    所以for k,v in dic.items();你就单独拿出了key值和value值;

    3.字典的嵌套

    代码展示:

     1 dic = {
     2     "name" : "国际章",
     3     "工资" : 18000,
     4     "age" : 18,
     5     "human" : {
     6         "name1" : "汪峰",
     7         "工资1" : 10,
     8         "age" : 356
     9     },
    10     "son" : [
    11         {"name3" : "王贤柏", "age" : 19},
    12         {"name4" : "吴祖蓝", "age" : 119}
    13     ]
    14 }
    15 print(dic["human"]["工资1"])
    16 print(dic["son"][0]["name3"])
    17 #输出结果:10
    18                 王贤柏
    19         
    字典的嵌套
  • 相关阅读:
    2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 C: Coconut
    2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 A: Banana
    第2周项目1c++语言中函数参数传递的三种方式
    第2周项目2程序的多文件组织
    【BZOJ 3224】普通平衡树
    【POJ 1741】Tree
    浅谈树分治
    【luogu 2709 / BZOJ 3781】小B的询问
    【luogu 1972 / BZOJ 1878】HH的项链
    【BZOJ 3339 / BZOJ 3585 / luogu 4137】Rmq Problem / mex
  • 原文地址:https://www.cnblogs.com/0627zhou/p/9275437.html
Copyright © 2011-2022 走看看