python字典学习

字典 dict

  1. 字典是一种可变的容器,可以存储任意类型的数据
  2. 字典中的每个数据都是用’键’(key) 进行索引,而不像序列可以用下标来进行索引
  3. 字典的数据没有先后顺序关系,字典的存储是无序的
  4. 字典中的数据以键(key)-值(value)对进行映射存储
  5. 字典的键不能重复,且只能用不可变类型作为字典的键

字典表示方式

  • 用 {} 括起来,以冒号(? 分隔键-值对, 各键值对用分号分隔开
  • 创建空字典
    d = {}
  • 创建非空字典
    d = {'name': 'tarena', 'age': 15}
    d = {'姓名': '小张'}
    d = {1:'壹', 2:'贰'}

初始化字典

Python可以在创建字典的时候初始化字典

>>> info = {"name" : 'cold'}
>>> info = dict(name = 'cold')       # 更优雅

很明显第二种方法更加的优雅和减少一些特殊字符的输入,但是有种情况第二种不能胜任

>>> key = 'name'
>>> info = { key :'cold'}  # {'name':'cold'}
>>> info = dict(key = 'cold') # {'key': 'cold'}

明显第二种方法就会引发一个不容易找到的bug

Python字典还有一种初始化方式,就是使用字典的fromkeys方法可以从列表中获取元素作为键并用None或fromkeys方法的第二个参数初始化

>>> info = {}.fromkeys(['name', 'blog'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'], 'linuxzen.com')
>>> info
{'blog': 'linuxzen.com', 'name': 'linuxzen.com'}

获取键值

字典可以这样获取到键的值

>>> info = {'name':'cold', 'blog':'linuxzen.com'}
>>> info['name']
'cold'

但是如果获取不存在的键的值就会触发的一个KeyError异常,字典有一个get方法,可以使用字典get方法更加优雅的获取字典

>>> info = dict(name= 'cold', blog='www.linuxzen.com')
>>> info.get('name')
'cold'
>>> info.get('blogname')
None
>>> info.get('blogname', 'linuxzen')
'linuxzen'

我们看到使用get方法获取不存在的键值的时候不会触发异常,同时get方法接收两个参数,当不存在该键的时候就会返回第二个参数的值 我们可以看到使用get更加的优雅

字典还有一种方法返回指定键的值,D.setdefault()

D = {'Name': 'Runoob', 'Age': 7}
 
print ("Age 键的值为 : %s" %  D.setdefault('Age','25')) # 键存在在字典中则不会设置为指定值
print ("Sex 键的值为 : %s" %  D.setdefault('Sex', 'NA')) # 键不存在,指定一个值
print ("School 键的值为 : %s" %  D.setdefault('School')) # 键不存在,不指定值,默认为None
print ("新字典为:", D)
#output:
Age 键的值为 : 7
Sex 键的值为 : NA
School 键的值为 : None
新字典为: {'Name': 'Runoob', 'Age': 7, 'Sex': 'NA', 'School': None}

Python 字典 setdefault() 方法和 get() 方法类似,返回指定键的值,如果键不在字典中,将会添加键并将值设置为一个指定值,默认为None。已存在不修改指定值

get() 和 setdefault() 区别: setdefault() 返回的键如果不在字典中,会添加键(更新字典),而 get() 不会添加键

del 语句删除字典的元素

语法:del 字典[键]

d = {'name': 'china', 'pos': 'asia'}
del d['pos']
print(d)
del d['name']
print(d) # {}
#ouput
{'name': 'china'}
{}

字典的 in / not in 运算符

可以用 in 运算符来判断一个是否存在于字典中,如果存在则返回True, 否则返回False
not in 与 in 返回值相反

d = {'a': 1, 'b': 2}
'a' in d # True
1 in d # False
100 not in d # True
2 not in d # True

字典的迭代访问

字典是可迭代对象,字典只能对键进行迭代访问

d = {'name': 'LeoLRH', (2002, 1, 1): '生日'}
for x in d:
    print(x)
# output
name LeoLRH
(2002, 1, 1) 生日

字典也可以直接对键值进行排序,但键值必须都为数都为字符

d = {3: 'LeoLRH', 1: '生日'}
for x in sorted(d.keys()):
    print(x,d[x])
# output
1 生日
3 LeoLRH

可以用于字典的内建函数

len(x) 返回字典键-值对的个数
max(x) 返回字典的键的最大值
min(x) 返回字典的键的最小值
sum(x) 返回字典所有键的和
any(x) 真值测试,只对键测试,如果其中一个键为True,结果为True
all(x) 真值测试,全部键为True时,结果才为True

字典的方法

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值