python 字典详解

1.字典的定义

  • 字典类似于列表,但相对于列表来说字典更加通用,列表的下标必须必须为整数,而字典下标则可以为任意字符串/数字等,不可以是可变数据类型(列表,数组,元组)
  • 字典包含下标(keys)集合和值(vaule)集合,且keys是唯一的

2.字典的创建

  实例如下:

  

 1 d1={'name':'alex','age':18,1:'85'}
 2 d2={}
 3 d2['name']='john'
 4 d2['age']=15
 5 d3=dict(name='lili',age=12)
 6 d4=dict(zip(('name','age'),('tom',20)))
 7 print "d1=",d1
 8 print "d2=",d2
 9 print "d3=",d3
10 print "d5=",d4

 

  输入如下

1 d1= {1: '85', 'age': 18, 'name': 'alex'}
2 d2= {'age': 15, 'name': 'john'}
3 d3= {'age': 12, 'name': 'lili'}
4 d4= {'age': 20, 'name': 'tom'}

3.字典的特性

  • 无序性

    字典最终显示的值是不会按照插入的先后顺序所决定的。因为字典的本质是hash table,而Hash的本质是, 将一数列作为Key尽量平均分配另一个数列Value到程序已经申请好的Array上。

  • 键值唯一性

    字典中的键值是唯一(重复的只会保存一个)

4.字典的基本操作

  • 修改字典
1 #coding=utf-8
2 d1 = {'name':'alex'}
3 print '字典修改前:', d1 4 d1['name']='Bod' 5 print '字典修改后:' ,d1

  实例输出结果:

1 字典修改前: {'name': 'alex'}
2 字典修改后: {'name': 'Bod'}
  • 字典访问
1 #coding=utf-8
2 d1 = {'name':'alex','age':18}
3 print 'd1["name"]:',d1["name"]
4 print 'd1["age"]:',d1["age"]

  实例输出结果:

1 d1["name"]: alex
2 d1["age"]: 18

  键值不存在的情况无法通过该方法获取值,会抛出异常

 

  • 字典删除
 1 #coding=utf-8
 2 
 3 #删除某个键
 4 d1 = {'name':'alex','age':18}
 5 print '删除前字典内容:',d1
 6 del d1['name']
 7 print '删除后字典内容:',d1
 8 
 9 #清空字典
10 d2={'name':'alex','age':18}
11 print '清空前字典内容:',d2
12 d2.clear()
13 print '清空后字典内容:',d2
14 
15 
16 #删除字典
17 d3={'name':'alex','age':18}
18 print '删除前字典内容:',d3
19 del d3
20 #捕获异常
21 try:
22     print '删除后字典内容:',d3
23 except NameError:
24     print 'd3不存在'

  实例输出结果:

1 删除前字典内容: {'age': 18, 'name': 'alex'}
2 删除后字典内容: {'age': 18}
3 清空前字典内容: {'age': 18, 'name': 'alex'}
4 清空后字典内容: {}
5 删除前字典内容: {'age': 18, 'name': 'alex'}
6 删除后字典内容: d3不存在

  删除字典指定键值时,需要确保键值存在,否则会抛出异常

 5.字典的内置函数

函数名称函数作用函数结果
cmp({"name":"alex"},{"name":"Bob"})比较两个字典是否相同完全相同返回0
len({"name":"alex"})计算字典键的个数1
str({"name":"alex"})将字典转为字符串"{'name': 'alex'}"
type({"name":"alex"})输出类型dict
dict1.clear()删除字典所有键值 
dict1.copy()复制字典 
dict.fromkeys(seq,vaule)创建字典,以seq为key,value为值 
dict1.get(key)根据key获取vaule,如果可以存在,则获取值,不存在,则返回None 
dict1.has_key(key)判断key是否存在,存在返回True,不存在Flase 
dict1.items()以列表返回可遍历的(键, 值) 元组数组 
dict1.keys()以列表返回所有key 
dict1.setdefault()和get功能相同 
dict1.values()以列表返回字典所有值 
dict1.update(dict2)将dict2添加到dict1中 
dict1.iteritems()返回一个迭代器 
dict1.pop(key)与del功能相同 
dict1.popitem()删除,并有返回值,字典为空时调用该方法抛出异常 

 

  

 

  

转载于:https://www.cnblogs.com/gj5379/p/7668809.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值