Python入门之字典

2019-07-17  本文已影响0人  我的袜子都是洞

使用字典

在Python中,字典是一系列键-值对。每个键都与一个值相关联,可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。
在Python中,字典用方在花括号{}中的一系列-键值对表示。

alien_0 = {'color': 'green', 'points': 5}

最简单的字典只有一个键-值对。

alien_0 = {'color': 'green'}

访问字典中的值

要获取与键相关联的值,可依次指定字典名和放在方括号内的键。

alien_0 = {'color': 'green'}
print(alien_0['color'])

添加键-值对

字典是一种动态结构,可随时在其中添加键-值对。要添加键-值对,可依次指定字典名、用方括号括起的键和相关联的值。

alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)

创建一个空字典

有时候,在空字典中添加键-值对是为了方便,而有时候必须这样做。为此,可先使用一对空的花括号定义一个字典,再分行添加各个键-值对。

alien_0 = {}

alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)

修改字典中的值

alien_0 = {'color': 'green'}
print(alien_0)
alien_0['color'] = 'yellow'
print(alien_0)

删除键-值对

对字典中不需要使用的信息,可以使用del语句将相应的键-值对彻底删除。使用del语句时,必须指定字典名和要删除的键。

alien_0 = {'color': 'green', 'points': 5}
print(alien_0)

del alien_0['points']
print(alien_0)

遍历字典

遍历所有键-值对

user_0 = {
    'username': 'efermi',
    'first': 'enrico',
    'last': 'fermi',
}

for key, value in user_0.items():
    print("\nKey: " + key)
    print("Value: " + value)

方法items(),它返回一个键-值对列表。

注意:遍历字典时,键-值对返回顺序也与储存顺序不同。Python不关心键-值对的储存顺序,而只跟踪键和值之间的关系联系。

遍历字典中所有的键

在不需要使用字典中的值时,方法keys()很有用。

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python'
}

for name in favorite_languages.keys():
    print(name.title())

方法keys()并非只能用于遍历,实际上,它返回一个列表,其中包含字典中的所有键。

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python'
}

if 'erin' not in favorite_languages.keys():
    print("Erin, please take our poll!")

按顺序遍历字典中的所有键

获取字典元素时,获取顺序是不可预测的,这不是问题,因为通常你想要的只是获取与键相关联的正确的值。
要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序。为此可以使用sorted()来获得按特定顺序排列的键的副本。

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python'
}

for name in sorted(favorite_languages.keys()):
    print(name.title() + ", thank you for taking the poll.")

遍历字典中的所有值

如果你感兴趣的主要是字典中包含的值,可使用方法values(),它返回一个值列表,而不包含任何键。这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,也许不是问题,但是如果很多呢?为剔除重复项,可使用集合(set),集合类似于列表,但每个元素都必须时独一无二的。

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python'
}

for language in set(favorite_languages.values()):
    print(language.title())

嵌套

有时候,需要将一系列字典储存在列表中,或将列表作为值储存在字典中,这称为嵌套。

字典列表

列表中嵌套字典:

alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}

aliens = [alien_0, alien_1, alien_2]

for alien in aliens:
    print(alien)

在字典中储存列表

有时候,需要将列表储存在字典中,而不是将字典储存在列表中。

pizza = {
    'crust': 'thick',
    'toppings': ['mushrooms', 'extra cheese'],
}

在字典中储存字典

可以在字典中嵌套字典,但这样做时,代码可能很快复杂起来。

上一篇下一篇

猜你喜欢

热点阅读