20180331python第三节课

 字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型,基本的操作包括如下: 

(1)len():返回字典中键—值对的数量; 

(2)d[k]:返回关键字对于的值; 

(3)d[k]=v:将值关联到键值k上; 

(4)del d[k]:删除键值为k的项; 

(5)key in d:键值key是否在d中,是返回True,否则返回False。

一、字典的创建 

1.1 直接创建字典

d={'one':1,'two':2,'three':3}

print d

print d['two']

print d['three']

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three': 3, 'two': 2, 'one': 1}

23>>>

1.2 通过dict创建字典

# _*_ coding:utf-8 _*_

items=[('one',1),('two',2),('three',3),('four',4)]

print u'items中的内容:'print items

print u'利用dict创建字典,输出字典内容:'

d=dict(items)

print d

print u'查询字典中的内容:'print d['one']

print d['three']

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

items中的内容:

[('one', 1), ('two', 2), ('three', 3), ('four', 4)]

利用dict创建字典,输出字典内容:

{'four': 4, 'three': 3, 'two': 2, 'one': 1}

查询字典中的内容:

或者通过关键字创建字典

# _*_ coding:utf-8 _*_

d=dict(one=1,two=2,three=3)

print u'输出字典内容:'print d

print u'查询字典中的内容:'print d['one']

print d['three']

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

输出字典内容:

{'three': 3, 'two': 2, 'one': 1}

查询字典中的内容:

二、字典的格式化字符串

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3,'four':4}

print d

print "three is %(three)s." %d

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'four': 4, 'three': 3, 'two': 2, 'one': 1}

three is 3.>>>

三、字典方法 

3.1 clear函数:清除字典中的所有项

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3,'four':4}

print d

d.clear()

print d

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'four': 4, 'three': 3, 'two': 2, 'one': 1}

{}

>>>

请看下面两个例子 

3.1.1

# _*_ coding:utf-8 _*_

d={}

dd=d

d['one']=1

d['two']=2print dd

d={}

print d

print dd

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'two': 2, 'one': 1}

{}

{'two': 2, 'one': 1}

>>>

3.1.2

# _*_ coding:utf-8 _*_

d={}

dd=d

d['one']=1

d['two']=2print dd

d.clear()

print d

print dd

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'two': 2, 'one': 1}

{}

{}

>>>

3.1.2与3.1.1唯一不同的是在对字典d的清空处理上,3.1.1将d关联到一个新的空字典上,这种方式对字典dd是没有影响的,所以在字典d被置空后,字典dd里面的值仍旧没有变化。但是在3.1.2中clear方法清空字典d中的内容,clear是一个原地操作的方法,使得d中的内容全部被置空,这样dd所指向的空间也被置空。 

3.2 copy函数:返回一个具有相同键值的新字典

# _*_ coding:utf-8 _*_

x={'one':1,'two':2,'three':3,'test':['a','b','c']}

print u'初始X字典:'print x

print u'X复制到Y:'

y=x.copy()

print u'Y字典:'print y

y['three']=33print u'修改Y中的值,观察输出:'print y

print x

print u'删除Y中的值,观察输出'

y['test'].remove('c')

print y

print x

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

初始X字典:

{'test': ['a', 'b', 'c'], 'three': 3, 'two': 2, 'one': 1}

X复制到Y:

Y字典:

{'test': ['a', 'b', 'c'], 'one': 1, 'three': 3, 'two': 2}

修改Y中的值,观察输出:

{'test': ['a', 'b', 'c'], 'one': 1, 'three': 33, 'two': 2}

{'test': ['a', 'b', 'c'], 'three': 3, 'two': 2, 'one': 1}

删除Y中的值,观察输出

{'test': ['a', 'b'], 'one': 1, 'three': 33, 'two': 2}

{'test': ['a', 'b'], 'three': 3, 'two': 2, 'one': 1}

>>>

注:在复制的副本中对值进行替换后,对原来的字典不产生影响,但是如果修改了副本,原始的字典也会被修改。deepcopy函数使用深复制,复制其包含所有的值,这个方法可以解决由于副本修改而使原始字典也变化的问题。

# _*_ coding:utf-8 _*_from copy import deepcopy

x={}

x['test']=['a','b','c','d']

y=x.copy()

z=deepcopy(x)

print u'输出:'print y

print z

print u'修改后输出:'

x['test'].append('e')

print y

print z

运算输出:

输出:

{'test': ['a', 'b', 'c', 'd']}

{'test': ['a', 'b', 'c', 'd']}

修改后输出:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'test': ['a', 'b', 'c', 'd', 'e']}

{'test': ['a', 'b', 'c', 'd']}

>>>

3.3 fromkeys函数:使用给定的键建立新的字典,键默认对应的值为None

# _*_ coding:utf-8 _*_

d=dict.fromkeys(['one','two','three'])

print d

运算输出:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three': None, 'two': None, 'one': None}

>>>

或者指定默认的对应值

# _*_ coding:utf-8 _*_

d=dict.fromkeys(['one','two','three'],'unknow')

print d

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three': 'unknow', 'two': 'unknow', 'one': 'unknow'}

>>>

3.4 get函数:访问字典成员

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

print d

print d.get('one')

print d.get('four')

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three': 3, 'two': 2, 'one': 1}

1None>>>

注:get函数可以访问字典中不存在的键,当该键不存在是返回None 

3.5 has_key函数:检查字典中是否含有给出的键

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

print d

print d.has_key('one')

print d.has_key('four')

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three': 3, 'two': 2, 'one': 1}

TrueFalse>>>

3.6 items和iteritems函数:items将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems与items作用相似,但是返回的是一个迭代器对象而不是列表

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

print d

list=d.items()

for key,value in list:

print key,':',value

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three': 3, 'two': 2, 'one': 1}

three : 3

two : 2

one : 1

>>>

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

print d

it=d.iteritems()

for k,v in it:

print "d[%s]="%k,v

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three': 3, 'two': 2, 'one': 1}

d[three]= 3

d[two]= 2

d[one]= 1>>>

3.7 keys和iterkeys:keys将字典中的键以列表形式返回,iterkeys返回键的迭代器

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

print d

print u'keys方法:'

list=d.keys()

print list

print u'\niterkeys方法:'

it=d.iterkeys()

for x in it:

print x

运算结果:

{'three': 3, 'two': 2, 'one': 1}

keys方法:

['three', 'two', 'one']

iterkeys方法:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

three

two

one

>>>

3.8 pop函数:删除字典中对应的键

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

print d

d.pop('one')

print d

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three': 3, 'two': 2, 'one': 1}

{'three': 3, 'two': 2}

>>>

3.9 popitem函数:移出字典中的项

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

print d

d.popitem()

print d

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three': 3, 'two': 2, 'one': 1}

{'two': 2, 'one': 1}

>>>

3.10 setdefault函数:类似于get方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值

# _*_ coding:utf-8 _*_

d={'one':1,'two':2,'three':3}

print d

print d.setdefault('one',1)

print d.setdefault('four',4)

print d

运算结果:

{'three': 3, 'two': 2, 'one': 1}

14

{'four': 4, 'three': 3, 'two': 2, 'one': 1}

>>>

3.11 update函数:用一个字典更新另外一个字典

# _*_ coding:utf-8 _*_

d={

'one':123,

'two':2,

'three':3

}

print d

x={'one':1}

d.update(x)

print d

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

{'three': 3, 'two': 2, 'one': 123}

{'three': 3, 'two': 2, 'one': 1}

>>>

3.12 values和itervalues函数:values以列表的形式返回字典中的值,itervalues返回值得迭代器,由于在字典中值不是唯一的,所以列表中可以包含重复的元素

# _*_ coding:utf-8 _*_

d={

'one':123,

'two':2,

'three':3,

'test':2

}

print d.values()

运算结果:

=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======

[2, 3, 2, 123]

>>>

元组与列表的区别之处在于,元组的元素不能修改。但是可以进行分片链接操作。

元组

name=('赵驰',100,99,88)

列表

name=['赵驰',100,99,88]

元组采用小括号,列表采用方括号

image.png

元组常见操作

元组合并

image.png

元组删除

元组内的元素不允许被删除,用del可以删除整个元组

image.png

  • cmp(tuple1, tuple2) 比较两个元组元素。
  • len(tuple) 计算元组元素个数。
  • max(tuple) 返回元组中元素最大值。
  • min(tuple) 返回元组中元素最小值。
  • tuple(list) 将列表转换为元组。

多维元组访问

>>> tuple=(('zhaochi',99),('wangwu',100))

>>> tuple[0][0]

'zhaochi'

>>> tuple[1][0]

'wangwu'

>>>

猜你喜欢

转载自my.oschina.net/u/3804884/blog/1788290