《Python编程从入门到实践》_06_字典

本文深入讲解了Python中字典的基本概念及其使用方法,包括字典的创建、访问、修改及删除等操作,还介绍了如何遍历字典以及字典的嵌套应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《Python编程从入门到实践》06字典

要掌握的内容:
能够将相关信息关系起来的python字典,能更准确的给个种真实物体建模。

  1. 访问和修改
  2. 遍历字典中存储数据
  3. 存储字典的列表
  4. 存储列表的字典
  5. 存储字典的字典

6.1 一个简单的字典

#存储外星人的信息
alien_0 = { 'color':'green','points':'5'}

print(alien_0['color'])
print(alien_0['points']

字典能高效的模拟现实世界中的情形

6.2 使用字典
字典是一系列键-值对,每一个键都与一个值相关联,用键来访问与之相连的值,与键关联的值可以是数字,字符串,列表或是字典,可将python对象作为字典中的值.

  • 在python中字典用{ }表示 (列表[ ])
alien_0 = { 'color':'green','points':'5'}

字典没有限制存储的个数

6.2.1 访问字典中的值

要获取与键先关联的值,可以依次指定字典名和放在方括号内的键,如下所示:

alien_0 = {'color':'green'}

print(alien_0['color'])

若想访问alien_0的颜色和点数,如果玩家猎杀了这个外星人,可以用以下代码获取玩家获得点数

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

new_points = alien_0['points']
#注意必要的空格
print("you just earn " + str(new_points) + " points!")

6.2.2 添加键-值对

  • 字典是一种动态结构,可以随时添加键值对(直接在后面写上字典名和要添加的键)
alien_0 = { 'color':'green','points':'5'}
print(alien_0)

alien_0['x_position'] = 0
alien_0['y_position'] = 12

print(alien_0)

{‘color’: ‘green’, ‘points’: ‘5’}
{‘color’: ‘green’, ‘points’: ‘5’, ‘x_position’: 0, ‘y_position’: 12}

  • 注意 : Python中键值对的添加顺序不关心,而是在意键和值之间的关联

6.2.3 先创建一个空字典

  • 原因: 为了方便
  • 当使用字典来存储用户提供的数据或在编写能自动生成大量键-值对的代码时,通常需要定义一个空字典
#例子
alien_0 = {}

alien_0['color'] = 'red'
alien_0['points'] = 5

print(alien_0)

{‘color’: ‘red’, ‘points’: 5}

6.2.4 修改字典中的值

  • 直接给键赋新值
# 以不同速度移动的外星人的位置进行跟踪,记录当前速度,以确定该外星人将向右移多远
alien_0 = {'x_position':0,'y_position':25,'speed': 'medium'}
print("Original x_position: " + str(alien_0['x_position']))

#向右移动外星人
#据外星人当前速度决定将其移动多远
if alien_0['speed'] == 'slow':
    x_increment = 1
elif alien_0['speed'] == 'medium':
    x_increment = 2
else:
    x_increment = 3

#新位置等于当前位置加上增量
alien_0['x_position'] = alien_0['x_position'] + x_increment
print("New x_position : "+ str(alien_0['x_position']))

Original x_position: 0
New x_position : 2

  • 通过修改字典,改变外星人的行为

6.2.5 删除键-值对

  • 彻底删除 del
del alien_0['points']

6.2.6 由类似对象组成的字典

  • 字典可以存储一个对象的多种信息,同时也可以存储多个对象的同一信息
#大家最爱的编程语言
favorite_language = {
    'jen' : 'python',
    'lisa':'c',
    'ming':'python',
    'sarah''ruby',
    }

6.3 遍历字典
6.3.1 遍历所有键值对
. items():

user_0 = {
    'uesrname':'penny',
    'first':'enrico',
    'last':'fermi',
    }

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

Key: uesrname

Value: penny

Key: first

Value: enrico

Key: last

Value: fermi

6.3.2 遍历字典中所有键

favorite_language = {
    'jen' : 'python',
    'lisa':'c',
    'ming':'python',
    'sarah':'ruby',
    }

for name in favorite_language.keys():
# for name in favorite_langages:

    print(name.title())

Jen
Lisa
Ming
Sarah

-遍历字典时会遍历所有键

favorite_languages = {
    'jen' : 'python',
    'lisa':'c',
    'ming':'python',
    'sarah':'ruby',
    }

friends = ['lisa','sarah']
for name in favorite_languages.keys():
    print(name.title())

    if name in friends:
        print("Hi, " + name.title() + " I see your favorite language is "+
              favorite_languages[name].title() +"!")

Jen
Lisa
Hi, Lisa I see your favorite language is C!
Ming
Sarah
Hi, Sarah I see your favorite language is Ruby!

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

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

favorite_languages = {
    'jen' : 'python',
    'lisa':'c',
    'ming':'python',
    'sarah':'ruby',
    }
#对方法dictionary.keys()的结果调用了sorted()
for name in sorted(favorite_languages.keys()):
    print(name.title()+ ",thank you for taking the poll."

6.3.4 遍历字典中所有值
- 使用方法values() , 它返回了一个列表,但不包含任何键
- 使用集合set,剔除重复项

favorite_languages = {
    'jen' : 'python',
    'lisa':'c',
    'ming':'python',
    'sarah':'ruby',
    }

print("the following languages have been mentioned:")
#通过对包含重复元素对列表,使用set(),可让python找出列表中独一无二对元素,并使用这些元素来创建一个集合
for language in set(favorite_languages.values()):
    print(language.title())

6.4 嵌套
- 系列字典存储在列表中,或将列表作为值存储在字典中
6.4.1 字典列表
如何管理成群结队的外星人呢?(目前还没有涉及类)
方法一:创建一个外星人列表,其中每个外星人都是一个字典
方法二:自动生成

#创建一个用于存储外星人的空列表
aliens = []
#创建30个粉红色的外星人
for alien_number in range(30):
    new_alien = {'color':'pink'}
    aliens.append(new_alien)

#现实前5个外星人
for alien in aliens[:5]:
    print(alien)
print("...")
#显示创建了多少外星人
print("total number of aliens: " + str(len(aliens)))

6.4.2 在字典中存储列表
例如:如何描述顾客的披萨 ,列表只能存储要添加的披萨配料,但如果使用字典,就不仅可以在其中关联配料列表,还可以包含其他有关但披萨描述

favorite_languages = {
    'jen' : ['python','c'],
    'lisa':['c++','c'],
    'ming':['python','c#'],
    'sarah':['ruby','python'],
    }
for name, languages in favorite_languages.items():
    print("\n" + name.title() +"'s favorite languages are:")
    for language in languages:
        print("\t" + language.title())

Jen’s favorite languages are:
Python
C

Lisa’s favorite languages are:
C++
C

Ming’s favorite languages are:
Python
C#

Sarah’s favorite languages are:
Ruby
Python

6.4.3 在字典中存储字典
(会使得代码复杂)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值