字典[dict]的理解,就可以对应成我们的身份证,身份证号是唯一的【对应键】,但是姓名是可以重复的【对应值】
先定义一个字典变量
>>> first_dict = {1:1, 2:2}
>>> first_dict
{1:1, 2:2}
第一个字典变量有两个键值对:第一对的键是1,值也是1;第二队的键是2,值也是2;
然后创建第二个字典变量
>>> second_dict = {1:1, 2:1}
>>> second_dict
{1:1, 2:1}
第二个字典变量有两个键值对:第一对的键是1,值是1;第二队的键是2,值也是1;说明值是可以重复的
再创建第三个字典变量
>>> third_dict = {1:1, 1:2}
>>> third_dict
{1:2}
第二个字典变量在创建时有两个键值对:第一对的键是1,值是1;第二队的键页是1,值是2;但是在打印出来的时候,第一个键值对没了,第二个键值对存在。
下面换个位置试试
>>> fourth_dict = {1:2, 1:1}
>>> fourth_dict
{1:1}
结果正好相反,现在可以下个解决:值可以重复,但键如果重复了,后定义的值会覆盖前面定义的值
现在重头开始新建一个字典[dict],并学习使用它的函数
>>> one_dict = {}
查看它的全部函数,如图:
往字典里面添加键值对,在截图中并未看到类似列表的append[追加]函数,所以这里要代码演示一下如何给字典[one_dict]添加元素
>>> one_dict['name'] = 'spbeen'
>>> one_dict
{'name': 'spbeen'}
字典赋值并打印出来,一切正常~然后试下同键不同值的赋值
>>> one_dict['name'] = 'bu'
>>> one_dict
{'name': 'bu'}
对相同的键赋不同的值,会覆盖之前的值
函数名 | 介绍 | |
---|---|---|
str(DICT) | 以列表形式打印字典【前面截图中显示的字典都是str类型】 | |
len(DICT) | 打印字典中的元素个数 | |
type(DICT) | 打印字典类型,肯定是返回dict | |
clear | 清空字典的所有元素 | |
get | 返回指定键的值,如果值不在字典中返回default值 | |
items | 以列表返回可遍历的(键, 值) 元组数组 | |
keys | 以列表形式返回字典中的所有键 | |
values | 以列表形式返回字典中的所有值 |
依旧是用one_dict参数,往里添加两个键值对
>>> one_dict
{'name': 'bu'}
>>> one_dict['one'] = 'one'
>>> one_dict['two'] = 'two'
>>> one_dict
{'name': 'bu', 'one': 'one', 'two': 'two'}
查看字典里面的所有键和值【values函数和keys函数】
>>> one_dict.values()
dict_values(['one', 'two', 'bu'])
>>> one_dict.keys()
dict_keys(['one', 'two', 'name'])
获取字典中的列表形式的所有键值【items函数】
>>> one_dict.items()
dict_items([('one', 'one'), ('two', 'two'), ('name', 'bu')])
获取字典中,指定键的值,存在和不存在两种【get函数】
>>> one_dict.get('name')
'bu'
>>> one_dict.get('three')
这里真的什么都没打印出来
然后清空字典内的所有数据
>>> one_dict
{'name': 'bu', 'one': 'one', 'two': 'two'}
>>> one_dict.clear()
这里也是空的,什么也没有
>>> one_dict
{}
最后贴上截图:
列表有列表生成式,字典也就有字典生成式,首先上个示例:
>>> dict_example = { i : i*2 for i in range(1,10) }
{1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}
对比列表生成式[ i for i in range(1,10)]
,只是将中括号换成了大括号,并且字典比列表多一个元素,因为字典每个元素都是键值对,列表每个元素就只是一个元素。
还有一点,键值对在字典中是一个元素,组合是键:值
- 键可以放任何类型,包括整型、字符串、列表和字典,一般是字符串;
- 值当然也是什么类型都可以,一般是字符串或是列表
字典还有一个非常好的优点,可以转换json,因为和json的格式非常像【但不能同等】