Python dict实现:增删改查一把梭,不会用等于白学
1.dict的增删改查及初始化1.1 dict的初始化1.dict() 构造函数可以直接从键值对序列里创建字典 dict((sape, 含有不明确含义的4139), (guido, 有着特定意义的4127), (jack, 代表这个数值的4098)。以sape为键的值是4139, 以guido为键的值是4127, 以jack为键的值是4098。2.字典推导式可以从任意的键值表达式中创建字典{2: 4, 4: 16, 6: 36}3.如果关键字能够被界定为简单字符串, 那么在某些情形下, 借助关键字参数去指定键值对这一举动会显得更为便利。{sape: 4139, guido: 4127, jack: 4098}1.2 dict的“增”于dict之中放置数据的办法, 在初始化给定之外, 能够借由key径直放置进去: d {} d Adam 67 d Adam 67 1.3 dict的“删”需删除一个键, 采用pop(键)方法, 此函数返回值是该键对应的取值, 与之对应的取值会自字典中被删除。创建一个字典d, 其中键为空字符串时对应的值是95, 键为Bob时对应的值是75, 键为Tracy时对应的值是85。 d.pop(Bob)75 d以冒号为界, 前面的空字符串对应的值是95, 名为Tracy的值是85。也可以用del 来删除一个键值对。 d {: 95, Bob: 75, Tracy: 85} del dBob d{: 95, Tracy: 85}1.4 dict的“改”可以通过key获取其value直接对其进行赋值 d {: 95, Bob: 75, Tracy: 85} dBob 70 d存在这样一组数据 , 其中“”对应的值是九十四 , “Bob”对应的值是七十 , “Tracy”对应的值是八十五。1.5 dict的“查”查询时若key不存在直接通过d‘’会出现在运用这种方式去获取与该key相对应的value时发生报错的情况, 如果要防止出现key不存在的那种错误, 存在着两种办法。一是通过in判断key是否存在 in dFalse二是借由dict所提供的get()方法, 要是key不存在, 能够返回None, 或者返回自己指定的value。 d.get() d.get(, -1)-1注意返回None的时候的交互环境不显示结果查询keyvalue含有键为name,其对应的值为chen的字典, 同时含有键为age,其对应的值为25的字典, 并且还含有键为loc,其对应的值为空字符串的字典。键值对集合中, 字典的键的集合获取方法返回的结果, 是对象, 并非列表, 字典的值的集合获取方法所得内容, 同样如是标点。# 以列表的形式返回keylist(dic.keys())# 以列表的形式返回valuelist(dic.())# 循环keyfor key in dic:print(key)# 循环keyfor key in dic.keys():print(key)循环那个value, 运用value()方法能够把所有的value给取出来。for value in dic.():PDd.HoUniAoHaO.CoM/tag/1241print(value)在以字典为范畴进行循环操作之际, 借助 items() 方法能够把里面含有的关键字以及与之相对应的值一起提取出来。对于字典中的键, 以及与该键对应的值, 在字典的项中进行遍历。print(key, value)2.dict是无序的需要注意的是, 对于dict的迭代, 由于dict的存储并非按照list的那种方式进行顺序排列, 所以, 迭代出来的结果顺序十分有可能是不一样的。(dict的标准规定)。不保证有顺序要保证有顺序的请用)fromd ()要是你想探讨有关dict无序该问题, 那下面这篇可以看看, 要是你想深入研究, 建议去看一下源码, 博主在这个地方未曾进行过深入探究。3.其他需要牢记的第一条就是dict的key必须是不可变对象这是由于dict是依据key去算value的存储所处位置的, 要是每一次算出相同的key而所得结果不一样, 那么dict的内部就会彻底陷入混乱状态。这个借助key来计算位置所用的算法被称作哈希算法(Hash)。在其中, 字符串、整数等均是不可变的状态, 所以, 能够安心当作key。要是一个元组仅仅含有字符串、数字或者元组, 那么此元组也能够被用作关键字。然而要是元组直接或者间接含有可变对象, 那么它就不可以被用作关键字。列表无法被用作关键字, 是因为列表能够借助索引、切片或者诸如() 和() 这类方法来产生改变。