python 每天一个知识点 第三天

字典dict

一,字典是什么?

  字典是Python中比较常用的数据结构,字典中每个成员是以“键:值”对的形式存放具有映射关系的数据。

语法:

字典以大括号“{}”包围的以“键:值”对方式声明和存在的数据集合,“键:值”对之间用“英文逗号”隔开。

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict

二,字典的特点:

  字典的每个健值的展现方式是:key:value用冒号分割

  键值之间为逗号分割;

  整个字典用大括号{}将键值括起来;

  字典是无序的,它不能通过偏移来存取,只能通过键来存取;

  键必须是唯一;

  键必须是不可变的数据类型,比如,数字,字符串,元组等,列表等可变对象不能作为键;

  键值可以是任意类型的对象;

三,字典的基本用法:

访问字典的值:

通过 key 访问value:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict['语文'])        # 通过键“语文”获取对应的值

添加键值对:

通过 key 添加 key-value 对:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict['物理'] = 97    # 添加 ‘物理’:  97
print(scores_dict)  # {'语文': 105, '数学': 140, '英语': 120, '物理': 97}

删除键值对:能删单一的元素

通过 key 删除 key-value 对:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
del scores_dict['数学']   # 删除 ’语文‘: 105
print(scores_dict)      # 输出 {'语文': 105, '英语': 120}

修改字典值:

通过 key 修改 key-value 对:
scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict['数学'] = 120  # 修改将“数学”修改为120
print(scores_dict)      # 输出 {'语文': 105, '数学': 120, '英语': 120}

判断键值对是否存在:如果要判断字典是否包含指定的 key,则可以使用 in 或 not in 运算符。需要指出的是,对于 dict 而言,in 或 not in 运算符都是基于 key 来判断的

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
# 判断scores_dict是否包含名为'语文'的key
print('语文' in scores_dict)          # True
# 判断scores_dict不包含'历史'的key
print('历史' not in scores_dict)      # True

四,字典的常用方法:

clear()方法:

clear() 用于清空字典中所有的 key-value 对,对一个字典执行 clear() 方法之后,该字典就会变成一个空字典

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict)  # 输出 {'语文': 105, '数学': 140, '英语': 120}
 
scores_dict.clear()     # 删除字典所有内容
print(scores_dict)      # 输出{}

get()方法:

get() 方法其实就是根据 key 来获取 value,它相当于方括号语法的增强版,当使用方括号语法访问并不存在的 key 时,字典会引发 KeyError 错误;但如果使用 get() 方法访问不存在的 key,该方法会简单地返回 None,不会导致错误

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.get('历史'))    # 输出 None
print(scores_dict['历史'])      # 报错 KeyError: '历史'

update()方法:

update() 方法可使用一个字典所包含的 key-value 对来更新己有的字典。在执行 update() 方法时,如果被更新的字典中己包含对应的 key-value 对,那么原 value 会被覆盖;如果被更新的字典中不包含对应的 key-value 对,则该 key-value 对被添加进去。

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict.update({'语文': 120, '数学': 110})
print(scores_dict)      # 输出{'语文': 120, '数学': 110, '英语': 120}

items()方法:

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

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.items())  # 输出 dict_items([('语文', 105), ('数学', 140), ('英语', 120)])

keys()方法:

以列表返回一个字典所有的键

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.keys())  # 输出 dict_keys(['语文', '数学', '英语'])

values()方法:

以列表返回字典中的所有值

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.values())  # 输出 dict_values([105, 140, 120])

pop()方法:

pop() 方法用于获取指定 key 对应的 value,并删除这个 key-value 对

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
scores_dict.pop('英语')   # 删除'英语'的键和值
print(scores_dict)  # 输出{'语文': 105, '数学': 140}

popitem()方法:

popitem() 方法用于弹出字典中最后一个key-value对

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(scores_dict.popitem())  # 输出('英语', 120)

setdefault()方法:

setdefault() 方法也用于根据 key 来获取对应 value 的值。但该方法有一个额外的功能,即当程序要获取的 key 在字典中不存在时,该方法会先为这个不存在的 key 设置一个默认的 value,然后再返回该 key 对应的值。

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
# 设置'语文'默认值为100
scores_dict.setdefault('语文', 100)
print(scores_dict)          # 输出{'语文': 105, '数学': 140, '英语': 120}
 
# 设置'历史'默认值为140
scores_dict.setdefault('历史', 140)
print(scores_dict)          # 输出{'语文': 105, '数学': 140, '英语': 120, '历史': 140}

formkeys()方法:

fromkeys() 方法使用给定的多个key创建字典,这些key对应的value默认都是None;也可以额外传入一个参数作为默认的value。该方法一般不会使用字典对象调用(没什么意义),通常会使用 dict 类直接调用

scores_dict = dict.fromkeys(['语文', '数学'])
print(scores_dict)  # 输出{'语文': None, '数学': None}
 
scores_dict = dict.fromkeys(('语文', '数学'))
print(scores_dict)  # 输出{'语文': None, '数学': None}
 
# 使用元组创建包含2个key的字典,指定默认的value
scores_dict = dict.fromkeys(('语文', '数学'), 100)
print(scores_dict)  # 输出{'语文': 100, '数学': 100}

len()方法:

计算字典元素个数,即键的总数。

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(len(scores_dict))  # 输出 3

str()方法:

输出字典可打印的字符串

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(str(scores_dict))  # 输出{'语文': 105, '数学': 140, '英语': 120}

type()方法:

返回输入的变量类型,如果变量是字典就返回字典类型

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
print(type(scores_dict))  # 输出<class 'dict'>

五,字典的for循环遍历

遍历key值:

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for key in scores_dict:
    print(key)

语文
数学
英语

遍历value值:

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for value in scores_dict.values():
    print(value)

遍历字典键值对:

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for key in scores_dict:
print(key + ":" + str(scores_dict[key]))    # 返回字符串

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for i in scores_dict.items():
print(i)    # 返回元组

scores_dict = {'语文': 105, '数学': 140, '英语': 120}
for key, value in scores_dict.items():
    print(key + ':' + str(value))

 

posted @ 2023-01-08 22:56  百因必有果  阅读(8)  评论(0编辑  收藏  举报