字典的基本行为在很多方面都类似于序列。
len(d)返回字典d包含的项(键-值对)数。
d[k]返回与键k相关联的值。
d[k] = v将值v关联到键k。
del d[k]删除键为k的项。
k in d检查字典d是否包含键为k的项。 虽然字典和列表有多个相同之处,但也有一些重要的不同之处。
键的类型:字典中的键可以是整数,但并非必须是整数。字典中的键可以是任何不可变 的类型,如浮点数(实数)、字符串或元组。
自动添加:即便是字典中原本没有的键,也可以给它赋值,这将在字典中创建一个新项。 然而,如果不使用append或其他类似的方法,就不能给列表中没有的元素赋值。
成员资格:表达式k in d(其中d是一个字典)查找的是键而不是值,而表达式v in l(其 中l是一个列表)查找的是值而不是索引。这看似不太一致,但你习惯后就会觉得相当自 然。毕竟如果字典包含指定的键,检查相应的值就很容易。
前述第一点(键可以是任何不可变的类型)是字典的主要优点。第二点也很重要,下面的示 例说明了这种差别:
>>> x = []
>>> x[42] = 'Foobar'
Traceback (most recent call last): File "<stdin>", line 1, in ?
IndexError: list assignment index out of range
>>> x = {}
>>> x[42] = 'Foobar'
>>> x
{42: 'Foobar'}
首先,我尝试将字符串'Foobar'赋给一个空列表中索引为42的元素。这显然不可能,因为 没有这样的元素。要让这种操作可行,初始化x时,必须使用[None] * 43之类的代码,而不能使 用[]。然而,接下来的尝试完全可行。这次我将'Foobar'赋给一个空字典的键42;如你所见,这 样做一点问题都没有:在这个字典中添加了一个新项,我得逞了。
三个资料Q群下载不了也转发不了,先放这里Fine_tuning.zipLangChain.zipdata_clear.rar