Python字典

Python中字典是一个很花里胡哨的东西,它可以存储几乎任意类型对象,而且使用方便;它与C++中的map容器很像,都是一个个的键值对,但它比起C++中的map容器使用起来要简洁得多;

先来看一下字典的样子:

dict = {'name':'jeha','sage':18,'sno':7277}

字典中每一个元素都是一个键值对,本例中,字典dict包含三个键值对,它们记录了学生jeha的基本信息;

字典由大括号,分割键值对的逗号,分割键与值的冒号,以及一个个键与值组成,在字典中允许值重复,但不允许键有重复,即一个字典中的所有键必须是互不相同的;不仅如此,Python要求字典中的键必须是不可变的,因此能够充当字典的键的基本数据类型有数值、字符串、以及元组,如果用允许值可变的列表来充当键就会报错;说到这里就顺便再多说一句,字典中的键尽管没有规定不允许重复,但如果你定义了重复的键,那么前一个键对应的值将会被冲走;

一.对字典的操作

1.访问、修改与添加

先新建一个字典:

dict = {'name':'jeha','sage':18,'sno':7277}

访问:
肯定是通过键来访问啦

print(dict['name'])# jeha

修改:

dict['sage'] = 16

添加:

dict['sex'] = 'girl'

2.删除

dict = {'name':'jeha','sage':18,'sno':7277}

#万能del
del dict['sno'] #删除了sno键值对
del dict #删除字典dict
#方法
del.clear() #clear()方法清空字典
del.pop(key) #根据键值删除键值对

3.遍历

dict = {'name':'jeha','sage':18,'sno':7277}
#利用方法items()遍历键值对
for k,v in dict.items():
    print(k,v)
#运行:
name jeha
sage 18
sno 7277

'''
利用方法keys()只遍历键
利用方法keys()只遍历值
不再举例
'''

二.有关字典的其它方法

copy() :返回字典的副本;
get(key):返回指定键的值,如果找不到该键则返回default;
popitem():随机弹出字典中的一个键值对;

这里要多说一些:这里的popitem()虽说是随机弹出,但其实和list.pop()一样,也是弹出底层最后一个键值对,但是由于字典中键值对的存储顺序是不可知的,所以也就可以说成是随机弹出;另外,弹出的键值对在字典中将被永久删除,该方法会返回弹出的键值对,如果需要,我们可以用两个变量来接受:
k,v = dict.popitem()

update():用新建字典去更新已有字典的键值对:

dict = {'name':'jeha','sage':18,'sno':7277}
dict.update({'sage':16,'sex':'girl'}) #update里面必须也是一个字典
print(dict)
#运行:
{'name': 'jeha', 'sage': 16, 'sno': 7277, 'sex': 'girl'}

分析:sage键原有字典已有,故值被覆盖,sex键原有字典没有,故添入;

setdefault(key,default=None):基本功能与get(key)方法一样,但除此之外,如果在字典中未找到该键,将会在字典中添加该键并为它设置默认值default,返回default;

dict = {'name':'jeha','sage':18,'sno':7277}
a = dict.setdefault('sage')
print(a)
dict.setdefault('sex',16)
print(dict)
#输出:
18
{'name': 'jeha', 'sage': 18, 'sno': 7277, 'sex': 16}

三.字典和列表的优缺点

和列表相比,字典有以下优点:
1.查找与插入速度快,不会因为数据量增大而减慢
2.内存占用大;

而列表则恰好相反:
1.查找与插入速度会随着数据量的增加而变慢;
2.内存占用小;

四.嵌套

关于嵌套在前面的文章中已有介绍,此处不再细说;

部分内容(不限于本文)参考自:

菜鸟编程
廖雪峰的官方网站
c语言中文网
以及《Python编程-从入门到实践》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值