python字典(Dictionary)

字典几乎可以存储任意类型对象。

列表的索引必须是整数,而字典的索引几乎可以是任何值。

字典可以看作是键(索引)的集合与值的集合的一种映射。每个键对应一个值,键与值之间的关系称为键值对(或者数据项)。

创建字典

字典内容使用大括号{}包起来,如下:

>>> age = {'zhao':24, 'qian':33, 'sun': 42 }
>>> age
{'zhao': 24, 'qian': 33, 'sun': 42}

我们创建了一个字典,并将其赋值给变量age。字典age中有三个键值对:

键值对
'zhao':24 'zhao' 24
'qian':33 'qian' 33
'sun':42 'sun' 42

可以看到,在字典中,每个键值对使用逗号,分隔;键值对中使用键:值的格式。

当多次打印同一个字典,键值对出现的顺序并不一样:

>>> age
{'qian': 33, 'sun': 42, 'zhao': 24}
>>> age
{'sun': 42, 'zhao': 24, 'qian': 33}

这是因为字典不会保存键值对的顺序。

使用dict()可以创建一个空字典:

>>> dict()
{}

字典中键值对中的值的可变的,但是键是不可变的。字典中键值对中的键需要满足下面的条件:

  • 不允许同一个键出现两次。
  • 键不可变,可以用数字、字符串或者元组充当,列表则不行。

访问字典

访问字典非常容易,使用索引就可以:

>>> age
{'zhao': 24, 'qian': 33, 'sun': 42}
>>> age['zhao']
24
>>> age['sun']
42
>>> age[1]
Traceback (most recent call last):
  File "", line 1, in 
KeyError: 1

如果输入字典中没有的键,会给出错误。

遍历字典

直接使用变量遍历字典,其实是在遍历字典的键序列:

>>> age
{'zhao': 24, 'qian': 33, 'sun': 42}
>>> for name in age:
...     print (name + str(age[name]))
... 
zhao24
qian33
sun42

例子中,name每次循环都保存一个字典age的键,之后通过age[name]的方式取得其对应的值。需要注意的是,字典并不保存顺序,所以每次输出的顺序可能不一致。

使用Dict.keys()获取字典的键列表,使用Dict.values()获取字典的值列表:

>>> age
{'zhao': 24, 'qian': 33, 'sun': 42}
>>> age.keys()      # 将age的键作为列表返回
dict_keys(['zhao', 'qian', 'sun'])
>>> age.values()    # 将age的值作为列表返回
dict_values([24, 33, 42])

使用Dict.items()将字典作为列表返回,字典中的键值对以元组的形式保存在列表中:

>>> age
{'zhao': 24, 'qian': 33, 'sun': 42}
>>> age.items()
dict_items([('zhao', 24), ('qian', 33), ('sun', 42)])

这样,就可以使用多变量赋值的方法来遍历字典:

>>> age
{'zhao': 24, 'qian': 33, 'sun': 42}
>>> for name,agee in age.items():
...     print ("NAME: %s, AGE: %d." % (name,agee))
... 
NAME: zhao, AGE: 24.
NAME: qian, AGE: 33.
NAME: sun, AGE: 42.

上面的例子中,字典中的每个键值对都作为元组被赋值到变量元组(name,agee)中。

修改字典

为字典添加一个新的键值对:

>>> age
{'zhao': 24, 'qian': 33, 'sun': 42}
>>> age['li'] = 73
>>> age
{'zhao': 24, 'qian': 33, 'sun': 42, 'li': 73}

上例中为字典age添加了键值对'li':73

如果字典中已有指定的键,则为更新操作:

>>> age
{'zhao': 24, 'qian': 33, 'sun': 42, 'li': 73}
>>> age['li'] = 77
>>> age
{'zhao': 24, 'qian': 33, 'sun': 42, 'li': 77}

使用del语句删除字典中的值:

>>> del age['li']

或者删除字典:

>>> del age

你可能感兴趣的:(python字典(Dictionary))