Python入门 — 字典

目录

一、使用字典

1、访问字典中的值

2、添加键值对

3、创建空字典

4、修改键值对的值

5、删除键值对

6、由类似的对象组成的字典

7、使用 get() 来访问值

二、遍历字典

1、遍历所有的键值对

2、遍历字典中的所有键

3、按特定的顺序遍历字典中的所有键

4、遍历字典中的所有值

三、嵌套

1、字典列表

2、在字典中存储列表

3、在字典中存储字典


一个简单的示例,存储了有关🐶的相关信息

dog = {'color': 'black', 'weight': 5} 
 
print(dog['color']) 
print(dog['weight'])

输出信息:

black

5

一、使用字典

在 Python 中,字典(dictionary)是一系列键值对。每个键都与一个值关联,可以使用键来访问与之关联的值。与键相关联的值可以是数、字符串、列表乃至字典。事实上,可将任意 Python 对象用作字典中的值。

在 Python 中,字典用放在花括号({})中的一系列键值对表示。键值对包含两个相互关联的值。当你指定键时,Python 将返回与之关联的值。键和值之间用冒号分隔,而键值对之间用逗号分隔。最简单的字典只有一个键值对,如下:
 

dog = { 'color':'blue' }

1、访问字典中的值

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

输出结果:

green

2、添加键值对

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

下面我们给小狗添加两个新的键值对,来表示小狗的位置:

dog = {'color': 'black', 'weight': 5} 
print(dog)
dog['x_position'] = 10
dog['y_position'] = 20
print(dog)

输出结果:

{'color': 'green', 'weight': 5}
{'color': 'green', 'weight': 5, 'x_position': 10, 'y_position': 20}

字典会保留定义时的元素排列顺序。如果将字典打印出来或遍历其元素,将发现元素的排列顺序与其添加顺序相同。

3、创建空字典

dog = {}
dog['color'] = 'blue'
dog['weight'] = 5
print(dog)

4、修改键值对的值

dog['color'] = 'white'
dog['weight'] = 10
print(dog)

输出结果:

{'color': 'white', 'weight': 10}

5、删除键值对

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

dog = {'color': 'black', 'weight': 5}
del dog['weight']
print(dog)

输出结果:

{'color': 'black'}

6、由类似的对象组成的字典

       可以使用字典来存储众多对象的同一种信息。假设你要调查很多人,询问他们喜欢的编程语言,可使用一个字典来存储这种简单调查的结果,如下所示:

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

7、使用 get() 来访问值

       使用放在方括号内的键从字典中获取感兴趣的值,可能会引发问题:如果指定的键不存在,就将出错。就字典而言,为避免出现这样的错误,可使用 get() 方法在指定的键不存在时返回一个默认值。get() 方法的第一个参数用于指定键,是必不可少的;第二个参数为当指定的键不存在时要返回的值,是可选的:

dog = {'color': 'green', 'speed': 'slow'}
point_value =  dog.get('points', 'No point.')
print(point_value)

输出结果:

No point.

注意:在调用 get() 时,如果没有指定第二个参数且指定的键不存在,Python 将返回值 None,这个特殊的值表示没有相应的值。

二、遍历字典

多种遍历方式:既可遍历字典的所有键值对,也可只遍历键或值。

1、遍历所有的键值对

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

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

输出结果:

Key: username
Value: efermi


Key: first
Value: enrico


Key: last
Value: fermi

       for 语句的第二部分包含字典名和方法 items(),这个方法返回一个键值对列表。接下来,for 循环依次将每个键值对赋给指定的两个变量。在这个示例中,使用这两个变量来打印每个键和与它关联的值。

2、遍历字典中的所有键

不需要使用字典中的值时,可以使用keys() 方法。

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'rust',
    'phil': 'python',
}
for name in favorite_languages.keys():
    print(name.title())

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

3、按特定的顺序遍历字典中的所有键

       遍历字典时将按插入元素的顺序返回其中的元素,但是在一些情况下,可能要按与此不同的顺序遍历字典。要以特定的顺序返回元素,一种办法是在 for 循环中对返回的键进行排序。使用 sorted() 函数来获得按特定顺序排列的键列表的副本。

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'rust',
    'phil': 'python',
}
for name in sorted(favorite_languages.keys()):
    print(f"{name.title()}")

输出结果:

Edward
Jen
Phil
Sarah

对方法 dictionary.keys() 的结果调用了sorted() 函数,刚才讲到,key()这个方法会返回一个列表,sorted()这个函数会对返回的列表进行排序。输出表明,按字母顺序显示

4、遍历字典中的所有值

可使用 values() 方法,它会返回一个值列表。与上同理:

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

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

输出结果:

Python
C
Rust
Python

       这种做法的缺点是,提取字典中所有的值,而没有考虑值是否有重复。当涉及的值很少时,这也许不是问题,但如果被调查者很多,最终的列表可能包含大量的重复项。为剔除重复项,可使用集合(set)。集合 set 中的每个元素都必须是独一无二的:

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

三、嵌套

有时需要将多个字典存储在列表中或将列表作为值存储在字典中,这就是嵌套。可以在列表中嵌套字典,在字典中嵌套列表,甚至在字典中嵌套字典。

1、字典列表

       假设字典 dog_0 包含一只狗的各种信息,但无法存储第二只狗的信息,更别说更多的狗的信息了。那么如何管理成群结队的狗呢?一种办法是创建一个汪汪大队,也就是狗狗列表,其中每只狗都是一个字典,包含有关该狗的各种信息。例如,创建一个包含三只狗的列表:

dog_0 = {'color': 'green', 'points': 5}
dog_1 = {'color': 'yellow', 'points': 10}
dog_2 = {'color': 'red', 'points': 15}
dogs = [dog_0, dog_1, dog_2]

for dog in dogs:
    print(dog)

结果输出:

{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}

2、在字典中存储列表

在餐厅点单时,我们需要存储比萨两个方面的信息:外皮类型和配料列表。配料列表是一个与键 关联的值;又比如,前面有关喜欢的编程语言的示例中,如果将每个人的回答都存储在一个列表中,被调查者就可以选择多种喜欢的语言。

favorite_languages = {
    'jen': ['python', 'rust'],
    'sarah': ['c'],
    'edward': ['rust', 'go'],
    'phil': ['python', 'haskell'],
}
for name, languages in favorite_languages.items():
    print(f"\n{name.title()}'s favorite languages are:")
for language in languages:
    print(f"\t{language.title()}")

3、在字典中存储字典

可以在字典中嵌套字典,但这样可能会让代码变得非常复杂。

users = {
    'aeinstein': {
        'first': 'albert',
        'last': 'einstein',
        'location': 'princeton',
    },
    'mcurie': {
        'first': 'marie',
        'last': 'curie',
        'location': 'paris',
    },
}
for username, user_info in users.items():
    print(f"\nUsername: {username}")
    full_name = f"{user_info['first']} {user_info['last']}"
    location = user_info['location']
    print(f"\tFull name: {full_name.title()}")
    print(f"\tLocation: {location.title()}")

存储每个用户的三项信息:名、姓和居住地。首先定义一个名为 users 的字典,其中包含两个键:用户名 'aeinstein' 和 'mcurie'。与每个键关联的值都是一个字典,其中包含用户的名、姓和居住地。

注意:每个用户的字典都有相同的结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值