python学习笔记(5)数据类型-字典

字典是另一种可变容器模型,且可存储任意类型对象。

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

d = {key1 : value1, key2 : value2 }

 

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

 

为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。
第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢,这种就是字典的实现方式。
字典的特性:
字典是无序的,因为它没有下标,用key来当索引,所以是无序的。
字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重。【不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,】键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行,如下实例:

一、增

dict2 = {'marry':[18,'北京'],'amy':[20,'山东'],'lily':[25,'河南']}  #值是列表(数组)

dict2['wuzm']= [20,'山东']   #增加响应的键和值就行
print(dict2)

二、删

能删单一的元素也能清空字典,清空只需一项操作。

显示删除一个字典用del命令,如下实例:

dict2 = {'marry':[18,'北京'],'amy':[20,'山东'],'lily':[25,'河南']}  #值是列表(数组)
del dict2['marry']   #删除键为marry的条目
dict2.clear()   #清空字典里的所有条目
del dict2     #删除字典dict2
print(dict2)

三、改

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

dict1 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict1['Age'] = 8   #修改单个字段
print(dict1)

四、查

把相应的键放入熟悉的方括弧,通过键查询响应的数据如下实例:

dict2 = {'marry':[18,'北京'],'amy':[20,'山东'],'lily':[25,'河南']}  #值是列表(数组)
print(dict2['marry'])   #通过键来访问,get方法下面介绍

五、函数

len(dict)   计算字典元素个数,即键的总数。

str(dict)  输出字典可打印的字符串表示。

type(dict)  返回输入的变量类型,如果变量是字典就返回字典类型

dict1 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print(len(dict1))  #计算字典元素个数
print(str(dict1))  # 输出字典可打印的字符串表示
print(type(dict1))  #返回输入的变量类型,如果是变量是字典类型就返回字典类型

六、方法

dict1 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict2 = {'marry':[18,'北京'],'amy':[20,'山东'],'lily':[25,'河南']}  #值是列表(数组)
seq = ('Name','Age','class')

dict1.clear()  #删除dict1里的所有元素

dict1.copy()   #返回一个字典的浅复制
print(dict1)

print(dict1.fromkeys(seq,2))  # fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,
                              # value 为字典所有键对应的初始值。

print(dict1.get('Name'))   #返回指定键的值,如果值不在字典中返回default值
print(dict1.items())   #以列表返回可遍历的(键, 值) 元组数组
print(dict1.keys())   #以列表返回一个字典所有的键
print(dict1.values())  #以列表返回字典中的所有值
print(dict1.setdefault('name1'))    #和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default=none

dict1.update(dict2)   # 把字典dict2的键/值对更新到dict里
print(dict1)

print(dict1.pop('Name'))   #删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值
print(dict1.popitem())     #随机返回并删除字典中的一对键和值。

循环字典:

 dic = {'stu1':'cc','stu2':'andashu','stu3':'niuniu'}
        for k in dic:
            print(k,dic[k])   #打印key和value的值,推荐使用这种方式,速度快
        for k,v in dic.items():
            print(k,v)   #打印key和value的值,这种方式不推荐,因为会把字典转换成列表,效率不高

 

转载于:https://www.cnblogs.com/wuzm/p/11533097.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值