五、Python基本数据类型五:字典类型

·字典就是一系列的标签和绑定在标签上的数据值对的集合

·字典容器中保存着一系列的key-value

·字典中通过 key 来访问 value

·键必须是唯一的,但值则不必。

·值可以取任何数据类型,但键必须是不可变的

1、字典的创建

·使用花括号{}

dict_a = {'a':1, 'b':2, 12:'abc', (10, 20):[1, 2, 3]}
dict_a
#{'b': 2, 12: 'abc', (10, 20): [1, 2, 3], 'a': 1}

·使用dict()方法,可以传入多个列表或元组参数作为 key-value 对,每个列表或元组将被当成一个 key-value 对,因此这些列表或元组都只能包含两个元素。

dict_a = [('celery', 1.58), ('brocoli', 1.29), ('lettuce', 2.19)]
dict_b = [['BMW', 8.5], ['BENS', 8.3], ['AUDI', 7.9]]
dict_1 = dict(dict_a)
dict_2 = dict(dict_b)
print(dict_1, '\n', dict_2)
#{'lettuce': 2.19, 'celery': 1.58, 'brocoli': 1.29} 
#{'AUDI': 7.9, 'BENS': 8.3, 'BMW': 8.5}
dict_a = dict(hello = 'world', abc = [1, 3], acd = (10,))
dict_a
#{'acd': (10,), 'hello': 'world', 'abc': [1, 3]}

2、字典的基本用法

(1)访问字典元素

·通过key访问value

dict_a = {'语文':89, '数学':98, '英语':98}
dict_a['语文']
#89

(2)修改字典元素

dict_a = {'语文':89, '数学':98, '英语':98}
dict_a['语文']  = 92
dict_a
#{'英语': 98, '语文': 92, '数学': 98}

(3)增加字典元素

·为不存在的key赋值即可增加字典元素,为存在的key赋值即可修改字典元素

dict_a = {'语文':89, '数学':98, '英语':98}
dict_a
#{'英语': 98, '语文': 89, '数学': 98}
dict_a['物理'] = 100
dict_a
#{'英语': 98, '物理': 100, '语文': 89, '数学': 98}

(4)删除字典元素

·使用del语句

dict_a = {'语文':89, '数学':98, '英语':98}
del dict_a['语文']           # 删除键是'语文'的条目
dict_a
#{'英语': 98, '数学': 98}
dict_a = {'语文':89, '数学':98, '英语':98}
dict_a.clear()            # 清空词典所有条目
dict_a
#{}
dict_a = {'语文':89, '数学':98, '英语':98}
del dict_a       # 删除词典
dict_a
'''
Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    dict_a
NameError: name 'dict_a' is not defined
'''

(5)判断指定元素是否存在

·使用innot in关键字判断是否存在指定的key

dict_a = {'语文':89, '数学':98, '英语':98}
'语文' in dict_a
#True
'物理' in dict_a
#False

3、使用字典格式化字符串

·在格式化字符串时,可以在字符串模板中按 key 指定变量,然后通过字典为字符串模板中的 key 设置值

# 字符串模板中使用key
temp = '教程是:%(name)s, 价格是:%(price)010.2f, 出版社是:%(publish)s'
book = {'name':'Python基础教程', 'price': 99, 'publish': 'C语言中文网'}
# 使用字典为字符串模板中的key传入值
print(temp % book)
#教程是:Python基础教程, 价格是:0000099.00, 出版社是:C语言中文网
book = {'name':'C语言小白变怪兽', 'price':159, 'publish': 'C语言中文网'}
# 使用字典为字符串模板中的key传入值
print(temp % book)
#教程是:C语言小白变怪兽, 价格是:0000159.00, 出版社是:C语言中文网 

4、字典的常用方法

(1)update()方法:更新己有的字典

dict_a = {'语文':89, '数学':98, '英语':98}
dict_a.update({'语文':92, '物理':100})
dict_a
#{'英语': 98, '物理': 100, '语文': 92, '数学': 98}

(2)items()、keys()、values()方法:分别用于获取字典中的所有 key-value 键值对、所有 key、所有 value,可通过 list() 函数把它们转换成列表

dict_a = {'语文':89, '数学':98, '英语':98}
dict_a.items()
#dict_items([('英语', 98), ('语文', 89), ('数学', 98)])
dict_a = {'语文':89, '数学':98, '英语':98}
dict_a.keys()
#dict_keys(['英语', '语文', '数学'])
dict_a = {'语文':89, '数学':98, '英语':98}
dict_a.values()
#dict_values([98, 89, 98])
dict_a = {'语文':89, '数学':98, '英语':98}
list_a = list(dict_a.values())
list_a
#[98, 89, 98]
list_a[1]
#89
list_b = list(dict_a.items())
list_b
#[('英语', 98), ('语文', 89), ('数学', 98)]
list_b[1]
#('语文', 89)

(3)setdefault()方法:返回指定 key 对应的 value;如果该 key-value 对存在,则直接返回该 key 对应的 value;如果该 key-value 对不存在,则先为该 key 设置默认的 value,然后再返回该 key 对应的 value

dict_a = {'语文':89, '数学':98, '英语':98}
# 设置默认值,该key在dict中不存在,新增key-value对
print(dict_a.setdefault('物理', 100))    #100
dict_a  #{'英语': 98, '物理': 100, '语文': 89, '数学': 98}
# 设置默认值,该key在dict中存在,不会修改dict内容
print(dict_a.setdefault('语文', 100))    #89
dict_a  #{'英语': 98, '物理': 100, '语文': 89, '数学': 98}

(4)fromkeys()方法:使用给定的多个 key 创建字典,这些 key 对应的 value 默认都是 None;也可以额外传入一个参数作为默认的 value

# 使用列表创建包含2个key的字典
a_dict = dict.fromkeys(['a', 'b'])
print(a_dict) # {'a': None, 'b': None}
# 使用元组创建包含2个key的字典
b_dict = dict.fromkeys((13, 17))
print(b_dict) # {13: None, 17: None}
# 使用元组创建包含2个key的字典,指定默认的value
c_dict = dict.fromkeys((13, 17), 'good')
print(c_dict) # {13: 'good', 17: 'good'}

(5)常用方法小结

序号

函数及描述

 

1

len(dict)
计算字典元素个数,即键的总数。

2

str(dict)
输出字典,以可打印的字符串表示。

3

type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。

4

radiansdict.clear()
删除字典内所有元素

5

radiansdict.copy()
返回一个字典的浅复制

6

radiansdict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

7

radiansdict.get(key, default=None)
返回指定键的值,如果键不在字典中返回 default 设置的默认值

8

key in dict
如果键在字典dict里返回true,否则返回false

9

radiansdict.items()
以列表返回可遍历的(键, 值) 元组数组

10

radiansdict.keys()
返回一个迭代器,可以使用 list() 来转换为列表

11

radiansdict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

12

radiansdict.update(dict2)
把字典dict2的键/值对更新到dict里

13

radiansdict.values()
返回一个迭代器,可以使用 list() 来转换为列表

14

pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

15

popitem()
随机返回并删除字典中的最后一对键和值。

posted @ 2020-07-31 14:42  爱喝奶茶的CC怪  阅读(369)  评论(0)    收藏  举报