python3:字典(当索引不好用时)

一般情况下,我们都可以用列表来存放数据。但是,某些时候,字典比列表更加实用:

(1)表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组。

(2)存储文件修改时间,用文件名作为键。

(3)数字电话簿等。

映射可以使用任意不可变对象标识元素。最常用的类型是字符串和元组。而字典是python中唯一内建的映射函数。字典中的值没有特定的顺序,但都存放在特定的Key下。且每个键值对内部都用冒号进行分割,对之间用逗号隔开。整个字典用{}花括号括起来。

字典中的每个键都是唯一的,但是其值不需要。值可以是任何数据类型,但是键必须是不可变的。

创建字典

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

访问字典中的值

>>> dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>> dict['Alice']
'2341'

其他基本的字典操作

  • d[k]返回关联到键k上的值;
  • d[k]=v,将v关联到键k上。更新。
  • len(d) 返回d中键值对的数量。
  • del d[k] 删除键为k的项。
  • k in d 检查d中是否含有键为k的项。
  • clear 清空字典。
>>> dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}  
>>> dict['Alice']  #返回关联到Alice上的值
'2341'
>>> dict['Alice']='1111'#更新键Alice
>>> dict        #查看字典
{'Alice': '1111', 'Beth': '9102', 'Cecil': '3258'}
>>> len(dict)   #返回dict中键值对的数量
3
>>> del dict['Beth'] #删除字典dict中键为Beth的键值对
>>> dict
{'Alice': '1111', 'Cecil': '3258'}
>>> 'Cecil' in dict  #检查dict中是否有键为Cecil的项
True

字典键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

>>> dict={'name':'Alice','name':'Bob'}
>>> dict['name']
'Bob'

2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:

>>> dict = {['Name']: 'Runoob', 'Age': 7}
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unhashable type: 'list'

注意:字符串和元组是不可变的,而列表是可以更改的!

利用字典格式化字符串

前面已经学过如何使用字符串格式化元组中所有的值。如果使用的是字典(只以字符串作为键的)而不是元组,会使字符串格式化更加酷一些。在每个转换说明符(conversion specifier)中的%字符后面,可以加上键(用圆括号括起来),后面再跟上其他说明元素。如下:

>>> phonebook={'Beth':'9029','Alice':'2182','Bob':'1292'}
>>> "Bob's phone number is %(Bob)s."%phonebook
"Bob's phone number is 1292."

除了增加增加的字符串键外,转换说明符还是像以前一样工作。当以这种方式使用字典时,只要所给出的键能在字典中找到,就可以使用任意数量的转换说明符。这类字符串格式化在模板系统中非常有用!

Python字典包含了以下内置方法:

序号 函数及描述
1 radiansdict.clear()
删除字典内所有元素
2 radiansdict.copy()
返回一个字典的浅复制
3 radiansdict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4 radiansdict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值
5 key in dict
如果键在字典dict里返回true,否则返回false
6 radiansdict.items()
以列表返回可遍历的(键, 值) 元组数组
7 radiansdict.keys()
以列表返回一个字典所有的键
8 radiansdict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9 radiansdict.update(dict2)
把字典dict2的键/值对更新到dict里
10 radiansdict.values()
以列表返回字典中的所有值
11 pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
12 popitem()
随机返回并删除字典中的一对键和值(一般删除末尾对)。

 

 

你可能感兴趣的:(Python学习)