Python常用数据结构--字典

字典介绍


假设有个列表nameList,如果列表中的第2个元素写错了,那么需要使用下列代码来修改:
nameList = ['xiaozhang','xiaowang','xiaoli']
nameList[1] = 'xiaoxiaowang' 


但是,如果列表元素的顺序发生了变化,此时又要改下标,才能完成名字的修改,具体如下:
nameList = ['xiaowang','xiaozhang','xiaoli']
nameList[0] = 'xiaoxiaowang'


有没有方法,既能存储多个数据,还能在访问元素的时候很方便就能够定位到需要的那个元素呢?

答:
字典


一、字典的创建
info = {'name':'班长',‘id’:100,'sex':'f','address':'地球亚洲中国北京'}


说明:
1、字典和列表一样,也能够存储多个数据
2、列表中找某个元素时,是根据下标进行的
3、字典中找某个元素时,是根据名字(就是冒号:前面的那个值)
4、字典的每个元素由2部分组成,键:值。需要注意的是,键必须是唯一的,但值可以是任何类型的


字典的常见操作
1、根据键访问值
>>>info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
>>>print(info['name'])
>>>print(info['address'])
>>>班长
>>>地球亚洲中国北京


需要注意的是,若访问不存在的键,则会报错
>>> info['age']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'


在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,get方法用于返回指定键的值,如果访问
的键不在字典中,则会返回默认值。
>>>info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
>>> age = info.get('age')
>>> age #'age'键不存在,所以age为None
>>> type(age)
<type 'NoneType'>
>>> age = info.get('age', 18) #若info中不存在‘age’这个键,就返回默认值
>>> age
18


2、修改字典中的值
字典是可变的,它支持元素进行修改操作,包括添加新的元素、修改或者删除已经存在的元素。如果要添加的键已经存在,那么字典中该键对应的值会被新值替代。
>>>info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
>>>newId = input('请输入新的学号')
>>>info['id'] = int(newId)
>>>print('修改之后的id为%d:'%info['id'])
>>>请输入新的学号200
>>>修改之后的id为200

3、添加字典元素
当使用“变量名['键'] = 数据”时,如果字典中不存在这个键,那么就会在字典中新增一个元素。
>>>info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
>>>newId = input('请输入新的学号')
>>>info['id'] = newId
>>>print('添加之后的id为:%d'%info['id'])
>>>请输入新的学号168
>>>添加之后的id为168


4、删除字典元素
对字典进行删除操作,可以使用del或者clear两个命令实现,其中,del用于删除字典,而clear只是单纯的清空字典中的数据。

4.1 使用del删除字典元素
info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
print('删除前,%s'%info['name'])
del info['name']
print('删除后,%s'%info['name'])
Traceback(most recent call last):
File "test.py",line 9,in <module>
print '删除后',info['name']
KeyError: 'name'
结论:del删除字典元素后,不能再访问。

4.2 使用clear清空字典元素
info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
print('清空前,%s'%info['name'])
del info['name']
print('清空后,%s'%info['name'])

清空前,{'name':'班长', 'address':'地球亚洲中国北京', 'sex':'f', 'id':100}
清空后,{}

5、计算字典中键值对的个数
len方法可以计算字典中键值对的个数
>>>dict = {'Name':'xiaowang', 'Age':16}
>>>print("Length : %d" % len(dict))
>>>Length : 2

6、返回一个包含字典所以KEY的列表
keys方法可以获取字典的键视图
>>>dict = {'Name':'xiaowang', 'Age':16}
>>>print(dict.keys)
>>>['Name','Age']

7、返回一个包含字典所以value的列表
values方法可以获取字典的值视图
>>>dict = {'Name':'xiaowang', 'Age':16}
>>>print(dict.values)
>>>['xiaowang',16]

8、返回一个包含所以(键,值)的元组的列表
items方法可以获取字典的元素视图
>>>dict = {'Name':'xiaowang', 'Age':16}
>>>print(dict.items)
>>>[('Name','xiaowang'),('Age',16)]

9、字典的遍历
在实际开发中,字典的遍历可以利用for循环来完成。
dict = {'Name':'xiaowang', 'Age':16}
9.1 遍历字典的键
>>>for key in dict.keys():
...    print(key)
...
Name
Age


9.2 遍历字典的值
>>>for value in dict.values():
...    print(value)
...
xiaowang
16

9.3 遍历字典的元素
>>>for item in dict.items():
...    print(item)
...
('Name','xiaowang')
('Age',16)

10、判断一个KEY是否在字典中,在返回True,否则返回False
>>>dict = {'Name':'xiaowang','Age':16}
>>>dict.has_key('Name')
>>>True
>>>dict.has_key('id')
>>>False



思考:如果实现带下标索引的遍历

>>> chars = ['a', 'b', 'c', 'd']
>>> i = 0
>>> for chr in chars:
...     print("%d %s"%(i, chr))
...     i += 1
...
0 a
1 b
2 c
3 d

python内置函数:enumerate()
>>> chars = ['a', 'b', 'c', 'd']
>>> for i, chr in enumerate(chars):
...     print i, chr
...
0 a
1 b
2 c

3 d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值