字典
字典是存储数据集合的对象
字典的每个元素都由两部分组成,每个元素都包含一个键和一个值
,
通常,字典被称为键到值的映射
,因为我们存储在字典中的每个值都会有一个分配的键(每次我们开始增值,我们都有一个键),
键必须是一个不变的对象
,键可以是你想要的任何键,但它必须是不变的(和元组的特征一样)
要检索特定值,请使用与其关联的键
,与列表不同,与其使用索引从字典中获取值,不如使用其键。(调用键,然后我们将获得该值)
字典中的元素是无序存储的
,在字典中元素是按随机顺序存储的。(因为字典知道当我们使用键来调用值,它将使用键来搜索值并将其返回给我们,因此顺序并不重要)
创建字典的格式是字典的名称和花括号{}
在里面要用逗号’ , ’ 隔开元素
元组对应(),列表使用[] ,字典则用{}
1·序列与字典的比较
一·
按顺序将元素添加到序列中的顺序进行存储
当我们将元素存储在列表中时,列表会记住它们存储在什么位置。
这就是列表的重点,列表采用我们存储在其中的值,并为其分配索引。,索引就是我们调用值的方式。
然而,字典值不会以任何特定顺序存储,继续使用上面的例子:
创建字典并存储了三个元素,一旦我们创建了,Python就会将字典中的项重新排列并按顺序排列,在这种情况下,将按键的大小顺序排列(因为这种情况下,键是整数,它按照大小顺序排序它们)
将序列元素的索引用作键
,我们可以将位置的索引号视为键,在字典中,键是明确分配的
****(因此,我们可以自己确定字典中一组元素的键是什么)。
2·从字典中检索值
从字典中检索值的一般格式是:dictionary[key]
**如果键在字典中,则返回关联的值,否则将引发KeyError异常
**与列表相似,当我们使用不存在的索引时,我们将返回与字典相同的错误
id_name = {123:'Chris', 125:'Katie', 120:'John'}
print(id_name[120])
#得出结果:
John
print(id_name[130])#130就是字典中不存在的键
#得出结果:
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
id_name[130]
KeyError: 130
使用in和not in运算符测试键是否在字典中
使用in和not in 在尝试采用元素之前进行检查,有助于防止KeyErrors键错误。
用if语句来检查字典中是否有这个键,如果该语句是正确的,我会得到打印的语句,如果是错误的,则if语句会忽略其中的代码语句,并且我们不会收到任何错误
3·向现有字典添加元素
字典是可变对象,添加新的键值对格式:dictionary[key] = value
如果字典中存在键,则与之关联的值将被更改
(因为字典是可变的,我可以使用现有键并为其分配新的值)
id_name = {123:'Chris', 125:'Katie', 120:'John'}
id_name[125]='Robert'
print(id_name)
#输出结果:
{123: 'Chris', 125: 'Robert', 120: 'John'}
id_name[133]='Paul'#这是字典中不存在的键和值
print(id_name)
#输出结果:
{123: 'Chris', 125: 'Robert', 120: 'John', 133: 'Paul'}
字典则将添加133(‘Paul’字典将采用键和值对并添加到现有元素列表中)
要删除键值对,格式:del dictionary[key]
键和Python将对元素的结尾进行键搜索,将其分配给该键并从字典中删除(如果键不在字典中,那么我们会收到KeyError)
4·获取元素数并混合数据类型
len函数:用于获取字典中的元素数
就像在列表中使用一样:
len(id_name)这将获取字典内元素的数量4
存储在单个字典中的值可以是不同类型的
5·字典键的属性
字典键的某些属性对于理解字典的功能非常重要。
键必须是不可变的对象,但关联的值可以是任何类型的对象,
一个字典可以包含几种不同的不可变类型的键。
键值应该是唯一的。如果在赋值过程中遇到重复的键,则以最后一个分配为准
record = {'name':'John', 'id':3245, 'age':33,'name':'Robert'}
print(record['name'])
#输出结果:
Robert
字典不允许键有相同的名字,相同的值(所以后面的’name’:‘Robert’将顶替前面有相同内容的键值对’name’:‘John’)要确保我们的字典中的每个值都有唯一的键。
一些操作字典的方法
(1)clear方法:删除字典中的所有元素,使其为空
有时可能我们会有个暂时的字典,用它来储存一些暂时的数据,当到达某个特定编程点时,我们会需要清除字典中的数据,并为下一轮存储数据做好准备,这时候就需要用到clear方法。
格式:dictionary.clear()
id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'}
id_name.clear()
print(id_name)
#输出结果:
{}
(2)get方法:从字典中获取与指定键关联的值
get用于获取字典的特定值
格式:dictionary.get(key,default)
default是默认参数,如果找不到键,则返回默认值。
id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'}
print(id_name.get(125, "Key not found in the dictionary"))
#输出结果:
Robert
print(id_name.get(129, "Key not found in the dictionary"))
#输出结果:
'Key not found in the dictionary‘
这会把字典拿走,找到125,再返还Robert。在这种情况下,作为默认设置,设置了"Key not found in the dictionary"。如果字典中没有任何键为129的内容,可以自动设置消息或者设置我想要的值。可以返回任何想要的东西,以防字典里没有我要找的键。
可以替代[]运算符,并且无法引发KeyError异常
(3)keys方法:将所有字典键作为序列返回
假设它是否用于调试,想看看字典里有什么或者需要根据字典的键创建一个列表,就可以使用keys方法。会把所有的键都放在字典里。
格式:dictionary.keys()
(4)pop方法:返回与指定键关联的值,并从字典中删除该键值对
取出键与键关联的值,并返回它,但它保持值不变。
格式:dictionary.pop(key,default)
default是默认设置,未找到键时返回默认值,和上面示例一样。
id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'}
id_name.pop(120, "Key not found")
'John'
print(id_name)
#输出结果:
{123: 'Chris', 125: 'Robert', 133: 'Paul'}
因为,pop从字典中删除了元素,如果打印,pop的值被删除。
(5)values方法:将所有字典值作为序列返回
返还所有字典的赋值为一个序列
格式:dictionary.values()
它可以遍历使用for循环。
(6)items方法:返回字典的所有键和相关值,作为一种称为字典视图的特殊序列类型
这是与字典相关的最具体的方法之一,它以特殊格式返回一切–字典视图。
格式:dictionary.items()
它可以遍历使用for循环。
id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'}
for key, value in id_name.items():
print(key, value)
#输出结果:
120 John
123 Chris
125 Robert
133 Paul
可以使用for循环来迭代,items方法将返回迭代的键值。字典视图由两个元素组成:键和值。
使用for循环遍历字典
字典也很适用于循环
一般格式:
每次循环迭代时,var都被分配一个键
id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'}
for var in id_name:
print(var)
#输出结果:
120
123
125
133
for var in id_name:
print(id_name[var])#打印字典中的变量
#输出结果:
John
Chris
Robert
Paul
列表,元组,字典,循环,它们组合在一起会变成非常强大的计算和编程技能,虽然有一点点复杂,但是还是希望能够耐心看完www