Python基础学习笔记——字典

字典

  • 字典类型(dict、dictionary)是**“键-值**”数据项的组合,每个元素是一个键值对。
  • 字典是除列表以外Python中最灵活的内置数据结构类型。
  • 字典可以存储多个数据,多个数据是以键值对的方式进行存储,字典的最外层是一对大括号,格式:
{key1: value1, key2: value2, key3:value4...}
# key可以是数字、字符串、bool,不可以是列表、元组,并且唯一!
# value可以是任意数据类型
  • 字典类型数据通过映射查找数据项,即通过键来存取,而不是通过偏移存取。
  • 映射:通过任意键查找集合中的值的过程。
  • 使用场景:对于存储描述性信息(数据)我们使用字典, 如:存储一个人的基本信息身份证号(键)–个人信息(值)
字典的属性
  • 通过键而不是偏移量(索引、下标)来读取,一个键对应一个值
  • 任意对象的引用的集合(联想列表存储结构图)
  • 可变、异构、任意嵌套
  • 属性可变映射类型对象引用表(哈希表-支持快速检索的数据结构)
  • 扩展:在Python3.6及以上版本,字典已经被优化成有序的了。在Python3.6之前使用有序字典需要使用OrderedDict类: 有序字典。
# 假如:在python3.6之前使用有序字典, OrderedDict类: 有序字典
from collections import OrderedDict

# 有序字典的使用,通过该类创建一个有序字典对象
my_dict1 = OrderedDict() # 创建的空的字典
my_dict1["name"] = "王五"
my_dict1["address"] = "西安"
my_dict1["age"] = 20
print(my_dict1)
for key, value in my_dict1.items():
    print(key, value)
-------------------------Out------------------------------------    
OrderedDict([('name', '王五'), ('address', '西安'), ('age', 20)])
name 王五
address 西安
age 20    
字典增删改查等操作
  • 加/修键值对:
# 如果key存在,为修改键值对操作
# 如果key不存在,为添加键值对操作
dict[key] = value
  • 除字典的键值对:
# 方式一:
del dict[key]

# 方式二:删除键值对的同时,接收删除的值,key不存在则报错
value = dict.pop(key)
# 方式三:清空整个字典
dict.clear()
# 扩展:删除dict字典变量,再次使用dict会报错说变量未定义
del dict
del(dict)

/并字典:

# 把字典里面的每一个键值对添加到另外一个大的字典里面,可以update。
# update表示更新合并字典,key存在的更新,不存在的合并
my_dict1 = {'name': '西施', 'address': '浙江'}
my_dict2 = {"age": 18, "sex": "女", "address": "江苏"}
# 合并字典,根据指定字典进行数据的合并
my_dict1.update(my_dict2)
  • 获取()字典的值:
# 方式一:如果key不存在会报错
value = dict[key]

# 方式二:get方式取值
# 如果key不存在则也不会崩溃,返回的是None
# 可以提供默认值,如果key不存在,可以使用提供的默认值
# 如果该值存在,则使用原始的数据,否则使用默认值
value = dict.get(key, '可选信息')
  • key是否字典中
key in dict
key not in dict
# 返回True或False
  • 字典键值对的个数(长度)
len(dict)
# 复习:len还可以统计列表、元组、字符串的长度
字典的遍历
  1. 普通遍历
for key in d:
    print('key是'+key, 'value是'+d[key])
  1. 遍历所有的key
for key in d.keys():
    print(key)
# 使用for循环直接遍历字典,默认取到的是每一个key
for key in dict:
    print(key)    
  1. 遍历所有的value
for value in d.values():
    print(value)

3.遍历所有的数据项

for item in d.items():
    print(item)
Out:('name', '陈晓') ----- 元组的形式
# 可以使用两个变量,分别保存key和value值
# 这里key,value的操作是拆包
for key, value in my_dict.items():
    print(key, value)    
  • dict.keys()/dict.values()/dict.items()的类型分别是:
# 形式 类型
dict_keys(['name', 'age'])  # <class 'dict_keys'>
dict_values(['李四', 20])  # <class 'dict_values'>
dict_items([('name', '李四'), ('age', 20)])  # <class 'dict_items'>
# 可以利用list()转换为列表
list(dict.keys())...
字典结合enumerate()、zip()函数
  • 函数的使用查看Python基础学习笔记——enumerate()、zip()
字典相关的内置函数
hash()
  • 用于判断某个对象是否可以做一个字典的键,非哈希类型报TypeError错误。
  • intfloatbooltuple都可以做keylistdict不行,即:不可变类型可以做key,可变类型不可以。
dict.setdefault(key, value=None)
  • key存在则返回其value,若key不存在,则dict[key]=value(不设置value默认为None
dict.fromkeys(s, val=None)
  • s必须是可迭代对象,val不写默认为None
  • s中的元素为键创建并返回一个字典,val为制定的默认值
d = [1,2,3]
dict = {}
dict = dict.fromkeys(d)
print(dict)  # {1: None, 2: None, 3: None}
dict = dict.fromkeys(d,'xiaodeng')  # xiaodeng为默认值
print(dict)   # {1: 'xiaodeng', 2: 'xiaodeng', 3: 'xiaodeng'}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼义II虎神

打赏5C币,作者可获得4C币

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值