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 d
'Bob'
>>> d
{'': 95, 'Tracy': 85}
1.4 dict的“改”
可以通过key获取其value直接对其进行赋值
>>> d = {'': 95, 'Bob': 75, 'Tracy': 85}
>>> d
'Bob'
= 70
>>> d
存在这样一组数据 , 其中“”对应的值是九十四 , “Bob”对应的值是七十 , “Tracy”对应的值是八十五。
1.5 dict的“查”
查询时若key不存在
:直接通过d
‘’
会出现在运用这种方式去获取与该key相对应的value时发生报错的情况, 如果要防止出现key不存在的那种错误, 存在着两种办法。
一是通过in判断key是否存在:
>>> '' in d
False
二是借由dict所提供的get()方法, 要是key不存在, 能够返回None, 或者返回自己指定的value。
>>> d.get('')
>>> d.get('', -1)
-1
注意:返回None的时候的交互环境不显示结果
查询key,value
含有键为'name',其对应的值为'chen'的字典, 同时含有键为'age',其对应的值为25的字典, 并且还含有键为'loc',其对应的值为空字符串的字典。
键值对集合中, 字典的键的集合获取方法返回的结果, 是对象, 并非列表, 字典的值的集合获取方法所得内容, 同样如是标点。
# 以列表的形式返回key
list(dic.keys())
# 以列表的形式返回value
list(dic.())
# 循环key
for key in dic:
print(key)
# 循环key
for key in dic.keys():
print(key)
循环那个value, 运用value()方法能够把所有的value给取出来。
for value in dic.():PDd.HoUniAoHaO.CoM/tag/1241
print(value)
在以字典为范畴进行循环操作之际, 借助 items() 方法能够把里面含有的关键字以及与之相对应的值一起提取出来。
对于字典中的键, 以及与该键对应的值, 在字典的项中进行遍历。
print(key, value)
2.dict是无序的
需要注意的是, 对于dict的迭代, 由于dict的存储并非按照list的那种方式进行顺序排列, 所以, 迭代出来的结果顺序十分有可能是不一样的。(dict的标准规定)。
不保证
有顺序,要保证有顺序的请用)
from
d = ()
要是你想探讨有关dict无序该问题, 那下面这篇可以看看, 要是你想深入研究, 建议去看一下源码, 博主在这个地方未曾进行过深入探究。
3.其他
需要牢记的第一条就是dict的key必须是不可变对象
这是由于dict是依据key去算value的存储所处位置的, 要是每一次算出相同的key而所得结果不一样, 那么dict的内部就会彻底陷入混乱状态。这个借助key来计算位置所用的算法被称作哈希算法(Hash)。
在其中, 字符串、整数等均是不可变的状态, 所以, 能够安心当作key。要是一个元组仅仅含有字符串、数字或者元组, 那么此元组也能够被用作关键字。然而要是元组直接或者间接含有可变对象, 那么它就不可以被用作关键字。列表无法被用作关键字, 是因为列表能够借助索引、切片或者诸如() 和() 这类方法来产生改变。