python基础教程学习笔记四

第四章 字典:当索引不好时

 字典的使用,示例代码如下:

#创建字典

>>> names=['alice','beth','cecli','dee-dee','earl']

>>>numbers=['2341','9102','3158','0142','5551']

>>>numbers[names.index('cecli')]

'3158'

 

创建和使用字典

 

#创建字典

>>>names=['alice':’2341’,'beth':’9102’]

 

Dict函数,示例代码

>>>times=[('name','retacn'),('age',32)]

>>> times

[('name','retacn'), ('age', 32)]

>>>d=dict(times)

>>> d

{'age': 32,'name': 'retacn'}

>>>d['name']

'retacn'

 

也可以通过关键字来创建字典

>>>d=dict(name='gumby',age=42)

>>> d

{'age': 42,'name': 'gumby'}

 

字典的基本操作

Len(key)

D[index] 指定位置的值

D[index]=value 重新赋值

Del d[index] 删除指定项

Key in d  检查是否包含key项

 

注:键可以是任何不可变类型

 

#使用空列表不可以赋值

>>>x=[]

>>>x[42]='retacn'

Traceback (mostrecent call last):

  File "<pyshell#13>", line 1,in <module>

    x[42]='retacn'

IndexError: listassignment index out of range

 

#如果想对列表赋值,需要对列表进行初始化

>>>x=[None]*43

>>>x[42]='retacn'

>>>x[42]

'retacn'

 

#字典可以直接赋值

>>>x={}

>>>x[42]='yue'

>>>x[42]

'yue'

 

字典实现简单数据库,示例代码如下:

people={

       'retacn':{

              'phone':18816170000,

              'address':'山东省淄博市博山区'

              },

       'yue':{

              'phone':1234567,

              'address':'boshan'

              }

       }

labels={

       'phone':'phone number',

       'address':'address'

       }

name=input('Name:')

request=input('phonenumber(p) or address(a)?')

ifrequest=='p':key='phone'

ifrequest=='a':key='address'

 

if name inpeople:print("%s's %s is %s." % (name,labels[key],people[name][key]))

 

程序运行结果如下:

Name:retacn

phone number(p)or address(a)?p

retacn's phonenumber is 18816170000.

 

 

字典的格式化字符串,示例代码如下:

>>>phonebook={'retacn':'123456','yue':'654321'}

>>>"retacn'sphone number is %(retacn)s." %phonebook

"retacn'sphone number is 123456."

 

字典的方法

clear清除字典中的所有项,示例代码:

>>>d={}

>>>d['name']='retacn'

>>>d['age']=32

>>> d

{'age': 32,'name': 'retacn'}

>>>returned_value=d.clear()

>>> d

{}

>>>print (returned_value)

None

 

注:如果被清空字典与其他字典关联,在清空后,关联字典也会被清空

 

复制和深度复制

>>>x={'username':'retacn','interest':['music','football']}

>>>y=x.copy()

>>> x

{'username':'retacn', 'interest': ['music', 'football']}

>>> y

{'username':'retacn', 'interest': ['music', 'football']}

>>>y['username']='yue'

#remove是一个原位置修改方法

>>>y['interest'].remove('football')

>>> x

{'username':'retacn', 'interest': ['music']}

>>> y

{'username':'yue', 'interest': ['music']}

注,在指定键重新赋值 的时候字典不受影响,但是在修改后,原始字典也会改变

 

>>>from copy import deepcopy

>>>d={}

>>>d['names']=['retacn','yue']

>>>c=d.copy()

>>>dc=deepcopy(d)

>>> d['names'].append('three')

>>> d

{'names':['retacn', 'yue', 'three']}

>>> c

{'names':['retacn', 'yue', 'three']}

>>> dc

{'names':['retacn', 'yue']}

 

Fromkeys使用给定的键创建新字典

>>>{}.fromkeys(['name','age'])

{'age': None,'name': None}

 

>>>dict.fromkeys(['name','age'])

{'age': None,'name': None}

#设置默认值

>>>dict.fromkeys(['name','age'],'(unknow)')

{'age':'(unknow)', 'name': '(unknow)'}

 

Get访问字典项的方法

>>>d={}

>>>print(d['name'])

Traceback (mostrecent call last):

  File "<pyshell#63>", line 1,in <module>

    print(d['name'])

KeyError: 'name'

>>>print (d.get('name'))

None

>>>d.get('name','N/A')

'N/A'

>>>d['name']='retacn'

>>>d.get('name')

'retacn'

 

Has_key检查字典中是否有给出的键,python3.0中没有此函数

>>>d={}

>>>d.has_key('name')

Traceback (mostrecent call last):

  File "<pyshell#70>", line 1,in <module>

    d.has_key('name')

AttributeError:'dict' object has no attribute 'has_key'

 

Items和iteritems字典项以列表形式返回

Keys和iterkeys字典中键以列表形式返回

Pop 取得对应键值,该项从字典中移除

Popitem 弹出随机的项

Setdefault 取得给定键所对应的值,

Update利用一个字典项更新另一个字典

Values 和 itervalues以列表形式返回字典中的值

posted @ 2016-08-22 11:52  retacn_yue  阅读(133)  评论(0编辑  收藏  举报