每天努力一点点,坚持下去 ------ 博客首页

Python 字典

字典:dict,全称是dictionary,它具有极快的查找速度;字典是一种key-value的数据类型,是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在大括号({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

如果不为 dict() 函数传入任何参数,则代表创建一个空的字典。例如如下代码:
d1 = {} #创建空字典
d2 = dict() #创建空字典

  

比如有份成绩表数据,语文:79,数学:80,英语:92,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关系。如果单纯使用两个列表来保存这组数据,则无法记录两组数据之间的关联关系。

为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value。

字典的特性:
字典是无序的,因为它没有下标,用key来当索引,所以是无序的。
字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重。

dict = {
    'username': 'brf',
    'password': '123456',
    'money': 20,
    'addr': '北京'
}

程序既可使用花括号语法来创建字典,也可使用 dict() 函数来创建字典。实际上,dict 是一种类型,它就是 Python 中的字典类型。

在使用花括号语法创建字典时,花括号中应包含多个 key-value 对,key 与 value 之间用英文冒号隔开;多个 key-value 对之间用英文逗号隔开。 

字典的基本用法

对于初学者而言,应牢记字典包含多个 key-value 对,而 key 是字典的关键数据,因此程序对字典的操作都是基于 key 的。基本操作如下:

  • 通过 key 访问 value 。
  • 通过 key 添加 key-value 对。
  • 通过 key 删除 key-value 对。
  • 通过 key 修改 key-value 对。
  • 通过 key 判断指定 key-value 对是否存在。
  • 通过 key 访问 value 使用的也是方括号语法,就像前面介绍的列表和元组一样,只是此时在方括号中放的是 key,而不是列表或元组中的索引。

(1)增:

stu_info = {
    'username':'brf',
    'password':'123456',
    'money':20,
    'addr':'北京'
}
stu_info['sex'] = 'man'
stu_info['name'] = '大白'
stu_info['age'] =  18
stu_info.setdefault('class','双子座')
print('之前的',stu_info)

stu_info.setdefault('age',38)
#如果使用setdefault,key已经存在了,就不会修改原来key的值
stu_info['name']='大白2'
print('之后的',stu_info)

之前的 {'money': 20, 'sex': 'man', 'class': '双子座', 'addr': '北京', 'age': 18, 'username': 'brf', 'name': '大白', 'password': '123456'}

之后的 {'money': 20, 'sex': 'man', 'class': '双子座', 'addr': '北京', 'age': 18, 'username': 'brf', 'name': '大白2', 'password': '123456'}

(2)修改:

stu_info = {
    'username':'brf',
    'password':'123456',
    'money':20,
    'addr':'北京'
}
stu_info['addr'] = '河北'

print('修改后:',stu_info)

修改后: {'money': 20, 'addr': '河北', 'username': 'brf', 'password': '123456'}

(3)取值:

stu_info = {
    'username':'brf',
    'password':'123456',
    'money':20,
    'addr':'北京'
}
print('money:',stu_info['money'])
print('addr:',stu_info['addr'])

money: 20
addr: 北京
stu_info = {
    'username':'brf',
    'password':'123456',
    'money':20,
    'addr':'北京'
}
print('所有的key:',stu_info.keys()) #  .keys()取到字典里面所有的key
print('所有的value:',stu_info.values()) #  .values()取到字典里面所有的value

所有的key: dict_keys(['password', 'addr', 'username', 'money'])
所有的value: dict_values(['123456', '北京', 'brf', 20])
stu_info = {
    'username':'brf',
    'password':'123456',
    'money':20,
    'addr':'北京'
}
print( '普通方法',stu_info['name2'] ) #取不存在的会报错
print('get方法',stu_info.get('name:','0')) #取不存在不会报错,会打印出指定那个

(4)删除:

stu_info = {
    'username':'brf',
    'password':'123456',
    'money':20,
    'addr':'北京'
}
stu_info.pop('username')#删除指定元素
del stu_info['money']#删除指定元素
stu_info.popitem()#随机删除一个元素
stu_info.clear() #清空

(5)取值添加:

d1 = {}
d2 = {'abc':1234}
d1.update(d2) #更新字典值,如果key存在的话,就更新,不存在的话就添加
print('update方法:',d1)
d.keys() #取到所有的key
d.values #取到所有的value
d.items() #取到key和value update方法: {'abc': 1234}

(6)字典转换成一个list

d1 = {'abc':1234}
print(d1.items())

dict_items([('abc', 1234)])

(7)循环字典:

dic = {'stu1': 'dabai', 'stu2': 'haha', 'stu3': 'win'}
for k in dic:
    print(k, dic[k])  # 打印key和value的值,推荐使用这种方式,速度快
for k, v in dic.items():
    print(k, v)  # 打印key和value的值,这种方式不推荐,因为会把字典转换成列表,效率不高
posted @ 2019-09-10 22:06  他还在坚持嘛  阅读(232)  评论(0编辑  收藏  举报