python学习笔记

字典的创建与使用:

 

 phonebook = {'Alice':'2341','Beth':'9102','Cecil':'3258'}

 

一个简单的字典事例:

people = {
    'Alice':{
        'phone':'2341',
        'addr':'Foo drive 23'
        },
    'Beth':{
        'phone':'9102',
        'addr':'Bar street 42'
        },
    'Cecil':{
        'phone':'3158',
        'addr':'Baz avenue 90'
        }
    }
 
labels = {
    'phone':'phone number',
    'addr':'address'
    }
name = raw_input('Name:')
 
request = raw_input('Phone number (p) or address(a)? ')
 
if request == 'p' : key = 'phone'
if request == 'a' : key = 'addr'
 
if name in people : print "%s's %s is %s." % \
   (name, labels[key],people[name][key])

 

运行结果:

Name:Beth

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

Beth's phone number is 9102.

 

 

 

Python基础教程第二版(4.2.3)

字典格式化字符串示例:

 

>>> template = '''<html>'''

>>> template = '''<html>

<head><title>s</title></head>

<body>

<h1>%(title)s</h1>

<p>%(text)s</p>

</body>'''

>>> data = {'title': 'My Home Page','text':'Welcome to my home page'}

>>> print template % data

 

 

字典方法:就像其他内建类型一样,字典也有方法。这些方法非常有用,但是可能不会像使用列表或者字符串方法那样频繁。

1、Clear

清除字典中所有的项。这是个原地操作,所以无返回值。

>>> d = {}

>>> d['name'] = 'Gumby'

>>> d['age'] = 42

>>> d

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

>>> returned_value = d.clear()

>>> d

{}

>>> print returned_value

None

 

 

情况一:

>>> x = {}

>>> y = x

>>> x['Key'] = 'Value'

>>> y

{'Key': 'Value'}

>>> x = {}

>>> y

{'Key': 'Value'}

 

情况二:

>>> x = {}

>>> y = x

>>> x['Key'] = 'Value'

>>> y

{'Key': 'Value'}

>>> x.clear()

>>> y

{}

两种情况中,xy最初对应同一个字典。情况一中,我们将x关联一个新的空字典来“清空”它,这对y一点影响也没有,它还关联到原先的字典.但如果真的想清空原始字典中的所有元素,必须使用clear方法.正如在情况二中所看到的,y随后也被清空了。

 

2、Copy

Copy方法返回一个具有相同键-值对的薪资点(这个方法实现的是浅复制(shalow copy),因为值本身就是相同的,而不是副本)

>>> x = {'username':'admin','machines':['foo','bar','baz']}

>>> y = x.copy()

>>> y['username'] = 'mlh'

>>> y['machines'].remove('bar')

>>> y

{'username': 'mlh', 'machines': ['foo', 'baz']}

>>> x

{'username': 'admin', 'machines': ['foo', 'baz']}

可以看到,当在副本中替换值的时候,原始字典不受影响,但是,如果修改了某个值(原地修改而不是替换),原始的字典也会改变,因为同样的值也存储在原字典中(就像上面例子中的“machines”列表一样)

避免这个问题的一种方法就是使用深复制(deep copy),复制其包含所有的值。可以使用copy模块的deepcopy函数来完成操作:

>>> from copy import deepcopy

>>> d = {}

>>> d['names'] = ['Alfred','Bertrand']

>>> c = d.copy()

>>> dc = deepcopy(d)

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

>>> c

{'names': ['Alfred', 'Bertrand', 'Clive']}

>>> dc

{'names': ['Alfred', 'Bertrand']}

 

3、Fromkeys

Fromkeys方法使用给定的键建立新的字典,每个键默认对应的值为None

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

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

刚才的例子首先构造了一个空字典,然后调用它的fromkeys方法,建立另一个字典.也可以用dict

 

 

 

 

 

映射:映射可以使用任何不可变对象标识元素.最常用的类型是字符串和元组.python唯一内奸的映射类型是字典.

利用字典格式化字符串:可以通过在格式化说明符中包含包括名称()来对字典应用字符串格式化操作.挡在字符格式化中使用元组时,还需要对元组中每一个元素都设定“格式化说明符”。在使用字典时,当所用的说明符可以在比字典中用到的项少。

 

你可能感兴趣的:(python学习笔记)