字典的基本语法
字典是一种唯一的一种映射数据类型,同时也是一种可变的数据类型:
字典的每个元素包含一个可以自定义的键,及这个键相对应的值。
同时,字典也是一种无序的数据类型!(但是在3.6版本之后就变成了有序的数据类型!)
概念:
不可变数据类型:元组,布尔值,数值,字符串,集合 ->可哈希
可变数据类型:列表,字典,集合set ->不可哈希
dict的key必须是不可变数据类型!而其value可以任意类型的数据!而且必须是唯一的。
dict 优点:(dict在查找的时候是使用二分查找的方法去搜索数据的,效率比较高!)
可以储存大量的关系型数据
字典的元素添加:
dict1['想增加的键'] = 想增加的数据 #字典可以直接使用赋值的形式增加元素。这里的方法在列表中就不行
#的值用一个列表去显示
dict.items() #将键值对显示为一个元组,并把所有键值对元组显示在一个列表中。
#如果想使用循环或者迭代时,可以生成以上列表,进行循环!但是这种方法非常占用内存,所以尽量不要使用。
可以使用for k,v in dict #同时,如果这个键已经存在了,那么就直接无覆盖了这个值
dict2.setdefault('想加的键','想加值') #增加键值对,如果已经存在该键则不做改动,不管存不存在都会返回这个键的值。
dic.fromkeys() #可以生成一个空字典,一个参数:一个新字典所有键的列表,第二个参数
想要添加的值
dic.copy() #生成一个新的副本字典,这里执行的是潜复制,即其中的元素id还是一样的。
字典的删除:
dict3.pop('键',如果没有这个键返回的值) #按照字典的键删除一个元素,并且返回一个值。可设返回值。
dict4.popitem() #删除最后一个值,返回被删除的那个键值对的元组。
dict5.clear() #清空该字典,,但是仍然保留该字典
del dict6[key] #直接删除该值
del dict7 #直接删除这个字典的内存
字典的修改:
dict8.update(dict9) #用dict9去更新dict8,如果前中有后的键时,进行覆盖,如果没有,则添加!
字典的查询:
可以直接使用in成员检验,查找的是字典的key而不能查找values
dict.keys() #将一个字典的键用一个列表去显示
dict.values() #就可以批量遍历地去打印这些键和值。
dict.get(key,'如果没有这个键,就返回的值') #查找一个键下的值,如果没有这个键,可以自定义返回的值。
字典的嵌套:
自己多理解吧,和列表的嵌套原则差不多。但是一定要注意,复杂的结构一定理清格式,方便阅读。
注意,bug点,在循环一个字典的时候,不能删除它的键值对!否则则可能产生RuntimeError