python基础教程2

3.字典

3.1创建字典

字典以类似于下面的方式表示:

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

字典由键及其相应的值组成,这种键–值对称为项(item)。在前面的示例中,键为名字,而 值为电话号码。每个键与其值之间都用冒号(:)分隔,项之间用逗号分隔,而整个字典放在花 括号内。空字典(没有任何项)用两个花括号表示:{}
函数dict()
使用函数dict()从其他映射(如其他字典)或键值对序列创建字典

>>> items = [('name', 'Gumby'), ('age', 42)] 
>>> d = dict(items) 
>>> d 
{ 'name': 'Gumby','age': 42} 
>>> d['name'] 
'Gumby'

一个元组的示例:


#一个简单的数据库
#人名做键的字典,每个人都作为一个字典
#字典包含‘phone’和‘addr’,分别表示电话号码和地址
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 = input('Name:')
#要查找电话号码还是地址?
request = input('Phone number(p) or address (a)?')

if request == 'p':
    key = 'phone'
if request == 'a':
    key = 'addr'

#当名字是字典所包含的键时打印信息
if name in people:
    print("{}'s  {}  is  {}.".format(name,labels[key],people[name][key]))

运行结果
Name:Beth
Phone number (p)or address (a)?a
Beth’s address is Bar street 42.

3.2字典的方法

1.clear
删除所有的字典项,无返回值。

people = {'phone':'2341','addr':'Foo drive 23'}
print(people)
people.clear()
print(people)

运行结果:
{‘phone’: ‘2341’, ‘addr’: ‘Foo drive 23’}
{}
2.copy
copy 方法返回一个新字典,其包含的键值对与原来的字典相同(这个方法执行的是浅复制, 因为值本身是原件,而非副本)。

people = {'phone':'2341','addr':'Foo drive 23'}
new_people= people.copy()
print(people)
print(new_people)

运行结果:
{‘phone’: ‘2341’, ‘addr’: ‘Foo drive 23’}
{‘phone’: ‘2341’, ‘addr’: ‘Foo drive 23’}
3. fromkeys
方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是None

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

或者可以使用特定值

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

4.get
方法get为访问字典项提供了宽松的环境。通常,如果你试图访问字典中没有的项,将引发 错误。

>>> d = {}
>>> print(d['name'])
Traceback (most recent call last):
  File "", line 1, in 
    print(d['name'])
KeyError: 'name'

使用get来访问不存在的键时,没有引发异常,而是返回None。可指定“默认” 值,这样将返回你指定的值而不是None。

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

当访问存在时,get与普通访问相同
5.items
方法items返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。字典项 在列表中的排列顺序不确定。
6. keys
方法keys返回一个字典视图,其中包含指定字典中的键
7.pop
方法pop可用于获取与指定键相关联的值,并将该键值对从字典中删除,返回删除的键对应的值。

>>> d={'x':1,'y':2}
>>> d.pop('x')
1
>>> d
{'y': 2}

8.value
方法values返回一个由字典中的值组成的字典视图。不同于方法keys,方法values返回的视 图可能包含重复的值。
注:添加新元素时可直接用如下方式

>>> d = {} 
>>> d[1] = 1 
>>> d[2] = 2 
>>> d[3] = 3 
>>> d[4] = 1 
>>> d.values() 
dict_values([1, 2, 3, 1]) 

9.update
方法update使用一个字典中的项来更新另一个字典

>>> c={'name':'alice','age':42,'address':'pylanf num92'}
>>> q={'score':77,'subject':'python'}
>>> c.update(q)
>>> c
{'name': 'alice', 'age': 42, 'address': 'pylanf num92', 'score': 77, 'subject': 'python'}

也可以用update直接更新对应键值对

>>> c.update({'bbb':2})
>>> c
{'name': 'alice', 'age': 42, 'address': 'pylanf num92', 'score': 77, 'subject': 'python', 'bbb': 2}

你可能感兴趣的:(python)