python学习之字典(dict)

字典

字典是一种通过关键字引用的数据结构,是一种key-value的形式,其主要利用hash的方式存储数据,复杂度为O(1),查询速度极快,就像字典一样,通过目录便可找到单词对应的页数,不用像list一样,逐条查找。

创建
dict ={
    'name':'xiaoming',
    'id':20,
    'course':{
        'c++':80,
        'java':82,
        'python':90
    }
}

上述例子中,键和值都是用冒号(:)将其隔离开,每一对之间用逗号(,)分割,整体都记在{}中

注意

1.字典的键必须唯一,不能修改; 2.值可取任何类型,同样不允许修改,比如字符串、数字或元祖

字典的增删改查
访问字典里的值
print "dict['name']:", dict['name']

# 结果
dict['name']: xiaoming

当然,如果字典中没有对应的键,会报错,可自行实验

修改字典
print "dict['id']:",dict['id']
dict['id'] = 25
print "dict['id']:",dict['id']

# 结果
dict['id']: 20
dict['id']: 25
删除字典数据
del dict['id']
print "dict['id']:",dict['id']

# 结果
KeyError: 'id'
dict['id']:
增加字典数据
dict['age']=20
print dict

# 结果
{'course': {'python': 90, 'java': 82, 'c++': 80}, 'age': 20, 'name': 'xiaoming', 'id': 20}
字典特性
  • 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
  • 键必须不可变,所以可以用数字,字符串或元组充当,列表完全不行
字典的内置方法
  • cmp(dict1, dict2)

如果两个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于字典dict2返回-1

dict1={'name':'xiaoming'}
dict2={'name':'xiaoming'}
dict3={'name':'xiaomings'}
dict4={'name':'ao'}
print cmp(dict1,dict2)
print cmp(dict1,dict3)
print cmp(dict1,dict4)

# 结果
0
-1
1
  • len(dict)

计算字典的长度,也就是字典key的个数

  • str(dict)

字典转成可打印的字符串形式

  • type(dic)

返回字典的类型

  • dict.get(key, default=None)

返回key指定的值,如果没有key返回默认值

print dict.get('name')
print dict.get('age',20)

# 结果
xiaoming
20
  • dict.setdefault(key, default=None)

和get类似,但如果键不存在于字典中,将会添加键并将值设为default,而get并不填加

print dict.get('name')
print dict.get('age',20)
print dict
print dict.setdefault('age',20)
print dict

# xiaoming
20
{'course': {'python': 90, 'java': 82, 'c++': 80}, 'name': 'xiaoming', 'id': 20}
20
{'course': {'python': 90, 'java': 82, 'c++': 80}, 'age': 20, 'name': 'xiaoming', 'id': 20}结果
  • dict.has_key(key)

如果键在字典dict里返回true,否则返回false

  • dict.keys()

以列表返回一个字典所有的键

  • dict.values()

以列表返回字典中的所有值

  • dict.items()

以列表返回可遍历的(键, 值) 元组数组

for key,value in dict.items():
    print key,':',value

# 结果
course : {'python': 90, 'java': 82, 'c++': 80}
name : xiaoming
id : 20
  • dict.update(dict2)

将字典dict2更新到dict里

dict.update({'id':30})
print dict

# 结果
{'course': {'python': 90, 'java': 82, 'c++': 80}, 'name': 'xiaoming', 'id': 30}
  • dict.pop(key[,default])

删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

print dict.pop('name')
print dict
print dict.pop('age',30)

# 结果
xiaoming
{'course': {'python': 90, 'java': 82, 'c++': 80}, 'id': 20}
30
  • dict.copy()

返回一个字典的浅复制,复制时只会复制父对象,而不会复制对象的内部的子对象,原字典和拷贝字典未完全分离,指向一处,当原字典发生改变,拷贝字典同样改变

dict_copy = dict.copy()
print  "new:",dict_copy
del dict['course']['python']
print "old:",dict
print "new:",dict_copy

# 结果
new: {'course': {'python': 90, 'java': 82, 'c++': 80}, 'name': 'xiaoming', 'id': 20}
old: {'course': {'java': 82, 'c++': 80}, 'name': 'xiaoming', 'id': 20}
new: {'course': {'java': 82, 'c++': 80}, 'name': 'xiaoming', 'id': 20}
  • dict.clear()

删除字典内所有元素

  • dict.fromkeys(seq[, value])

创建一个新字典,以序列 seq中元素做字典的键,value 为字典所有键对应的初始值,其中seq必须,value是可选参数,设置键序列seq的值

  • dict.popitem()

随机返回并删除字典中的一对键和值

print dict
print dict.popitem()
print dict

# 结果
{'course': {'python': 90, 'java': 82, 'c++': 80}, 'name': 'xiaoming', 'id': 20}
('course', {'python': 90, 'java': 82, 'c++': 80})
{'name': 'xiaoming', 'id': 20}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值