Python-字典

本文详细介绍了Python中字典的数据结构,包括创建、访问、修改、删除键值对的方法,以及遍历字典、列表和嵌套字典的技巧。
摘要由CSDN通过智能技术生成

字典是一种可以使用任意值作为键的数据类型,可以存储多个键值对的集合。字典的特点是不排序,不越过,可以用键来访问值,也可以用键来生成集合。


1. 创建字典

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

示例:

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

注:键和值之间用冒号分隔,而键-值对之间用逗号分隔。

2. 使用字典

2.1 访问字典里的值

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

示例:

alien_0 = {'color': 'green', 'points': 5}
new_points = alien_0['points'] 
print("You just earned " + str(new_points) + " points!")

结果:

You just earned 5 points!

2.2 添加键-值对

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

示例:

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

结果:

{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'y_position': 25, 'x_position': 0}

2.3 修改字典中的值

要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。

示例:

alien_0 = {'color': 'green'}
print("The alien is " + alien_0['color'] + ".")
alien_0['color'] = 'yellow'
print("The alien is now " + alien_0['color'] + ".")

结果:

The alien is green.
The alien is now yellow.

2.4 删除键-值对

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

例如,下面的代码从字典alien_0 中删除键'points' 及其值:

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

结果:

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

注: 删除的键-值对永远消失了。

可采取下面这种方式定义字典:(更清晰)

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

注:上述方式中字典内部代码缩进四个空格,结尾的“}”也要缩进四个空格。

3. 遍历字典

3.1 遍历所有的键-值对

可以使用一个for 循环来遍历这个字典:

示例:

user_0 = {
    'username': 'efermi',
    'first': 'enrico',
    'last': 'fermi',
    }
for key, value in user_0.items(): 
    print("\nKey: " + key) 
    print("Value: " + value)

要编写用于遍历字典的for 循环,可声明两个变量,用于存储键—值对中的键和值。for 语句的第二部分包含字典名和方法items() ,它返回一个键—值对列表。

结果:

Key: last
Value: fermi

Key: first
Value: enrico

Key: username
Value: efermi

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

3.2 遍历字典中的所有键

在不需要使用字典中的值时,方法 keys() 很有用。
favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
for name in favorite_languages.keys():
    print(name.title())

结果:

Jen
Sarah
Phil
Edward
注: 遍历字典时,会默认遍历所有的键 ,因此,如果将上述代码中的 for name in favorite_languages.keys(): 替换为 for name in favorite_languages: ,输出将不变。
方法 keys() 并非只能用于遍历;实际上,它返回一个列表,其中 包含字典中的所有键

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

字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。要以特定的顺序返回元素,一种办法是在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.")

结果:

Edward, thank you for taking the poll.
Jen, thank you for taking the poll.
Phil, thank you for taking the poll.
Sarah, thank you for taking the poll.

3.4 遍历字典中的所有值

如果你感兴趣的主要是字典包含的值,可使用方法 values() ,它返回一个值列表,而不包含任何键。
示例:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
print("The following languages have been mentioned:")
for language in favorite_languages.values():
print(language.title())

结果:

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

示例:

favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
print("The following languages have been mentioned:")  
for language in set(favorite_languages.values()):
    print(language.title())

结果:

The following languages have been mentioned:
Python
C
Ruby

4. 嵌套

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

4.1 字典列表

创建一个外星人列表,其中每个外星人都是一个字典,包含有关该外星人的各种信息。例如,下面的代码创建一个包含三个外星人的列表:
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)

结果:

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

4.2 在字典中存储列表

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

示例:

# 存储所点比萨的信息
pizza = {
    'crust': 'thick',
    'toppings': ['mushrooms', 'extra cheese'],
    }
# 概述所点的比萨
print("You ordered a " + pizza['crust'] + "-crust pizza " +"with the following toppings:")
for topping in pizza['toppings']:
    print("\t" + topping)

结果:

You ordered a thick-crust pizza with the following toppings:
mushrooms
extra cheese

4.3 在字典中存储字典 

可在字典中嵌套字典,但这样做时,代码可能很快复杂起来。
例如,如果有多个网站用户,每个都有独特的用户名,可在字典中将用户名作为键,然后将每位用户的信息存储在一个字典中,并将该字典作为与用户名相关联的值。在下面的程序中,对于每位用户,我们都存储了其三项信息:名、姓和居住地;为访问这些信息,我们遍历所有的用户名,并访问与每个用户名相关联的信息字典:
users = {
    'aeinstein': {
        'first': 'albert',
        'last': 'einstein',
        'location': 'princeton',
        },
    'mcurie': {
        'first': 'marie',
        'last': 'curie',
        'location': 'paris',
        },
    }
❶ for username, user_info in users.items():
❷     print("\nUsername: " + username) 
❸     full_name = user_info['first'] + " " + user_info['last']
      location = user_info['location']
❹     print("\tFull name: " + full_name.title())
      print("\tLocation: " + location.title())
我们首先定义了一个名为 users 的字典,其中包含两个键:用户名 'aeinstein' 'mcurie' ;与每个键相关联的值都是一个字典,其中包含用户的名、姓和居住地。在 ❶ 处,我们遍历字典users ,让 Python 依次将每个键存储在变量 username 中,并依次将与当前键相关联的字典存储在变量 user_info 中。在主循环内部的 处,我们将用户名打印出来。 在❸ 处,我们开始访问内部的字典。变量 user_info 包含用户信息字典,而该字典包含三个键: 'first' 'last' 'location' ;对于每位用户,我们都使用这些键来 生成整洁的姓名和居住地,然后打印有关用户的简要信息(见❹ ):

结果:

Username: aeinstein
    Full name: Albert Einstein
    Location: Princeton

Username: mcurie
    Full name: Marie Curie
    Location: Paris
  • 21
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值