python基础学习—第6章 字典

6.1 使用字典

1.在python中,字典是一系列键值对,每个键都与一个值相关联,可以使用键来访问相应的值
2.与键相关联的值可以是数、字符串、列表乃至字典,事实上,可将任何python对象用作字典中的值
3.字典用在花括号{}中的一系列键值对表示
4.键值对是两个相关联的值,键和值之间用冒号分隔,而键值对之间用逗号分隔

alien_0 = {'color':'green'}

6.1.1 访问字典中的值
1.要获取与键相关联的值,可依次指定字典名和放在方括号内的键

alien_0 = {'color':'green'}
print(alien_0['color'])#输出结果green

2.字典中可包含任意数量的键值对
6.1.2 添加键值对
1.字典是一种动态结构,可随时在其中添加键值对
2.添加键值对,可依次指定字典名、用花括号括起的键和相关联的值
3.字典中元素的排列顺序与定义时相同,遍历的顺序与添加顺序相同
6.1.3 添加空字典
1.使用字典来存储用户提供的数据,通常需要先定义一个空字典

alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)#输出结果{'color':'green'}

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

alien_0 = {'x_position':'0','y_position':'25','speed':'medium'}
print(f"Original position:{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(f"New position: {alien_0['x_position']}")
#输出结果:Original position:0 ;New position: 2

6.1.5 删除键值对
1.使用del语句将相应的键值对彻底删除,使用del语句时,必须指定字典名和要删除的键
2.删除的键值对会永远消失

alien_0 = {'color':'green','points':'5'}
del alien_0['points']
print(alien_0)#输出结果{'color':'green'}

6.1.6 由类似对象组成的字典
1.对于较长的列表和字典,以类似方法设置格式

fovorite_languages = {
    'jen' : 'python'
    'phil' : 'c'
}

6.1.7 使用get()来访问值
1.就字典而言,可使用方法get()在指定的键不存在时返回一个默认值,从而避免错误
2.get()方法的第一个参数用于指定键,是必不可少的,第二个参数为指定的键不存在时要返回的值,是可选的

alien_0 = {'color':'green','speed':'slow'}
point_value = alien_0.get('point','no point value assigned.')
print(point_value)#输出结果no point value assigned.

调用get()时,如果没有指定第二个参数且指定的键不存在,python将返回None,None表示没有相应的值

6.2 遍历字典

6.2.1 遍历所有键值对
1.使用for循环来遍历字典
2.for语句包含字典名和方法items(),它返回一个键值对列表

user_0 = {
     'username':'lily'
     'first':'haha'
     'last':'enheng'}
for key, value in user_0.items():
    print(f"\nkey: {key}")
    print(f"value: {value}")

6.2.2 遍历字典中所有的键
1.在不需要使用字典中的值时,方法keys()很有用
2.方法keys()并非只能用于遍历,实际上,它返回一个列表,其中包含字典中的所有键

user_0 = {
     'username':'lily'
     'first':'haha'
     'last':'enheng'}
for key in user_0.keys():
    print(key.title())

6.2.3 按特定顺序遍历字典中的所有键
1.以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序,可使用函数sorted()来获得按特定顺序排列的键列表的副本

favorite_languages = {
    'jen':'python'
    'sarah':'c'
    'edward':'ruby'
    'phil':'python'}
for name in sorted(favorite_languages.keys()):
     print(f"{name.title()},thank you for taking the poll")

6.2.4 遍历字典中的所有值
1.方法values()来返回一个值列表

favorite_languages = {
    'jen':'python'
    'sarah':'c'
    'edward':'ruby'
    'phil':'python'}
for lanhuages in favorite_languages.values():
    print(languages.title())
  #输出结果Python C Ruby Python

2.set()方法:对包含重复元素的列表过滤出独一无二的元素

favorite_languages = {
    'jen':'python'
    'sarah':'c'
    'edward':'ruby'
    'phil':'python'}
for lanhuages in set(favorite_languages.values()):
    print(languages.title())
  #输出结果Python C Ruby 是一个不重复的列表

3.可使用一对花括号直接创建集合,并在其中用逗号分隔元素,并直接输出独一无二的数据

languages = {'python','c','ruby','python'}
print(languages)
#输出结果{'c','ruby','python'}

notice:集合和字典很容易混淆,因为它们都是用一对花括号来定义的,当花括号内没有键值对时,定义的很可能是集合。不同于列表和字典,集合不会以特定的顺序存储元素。

6.3 嵌套

1.可以在列表中嵌套字典,在字典中嵌套列表,甚至在字典中嵌套字典
6.3.1 字典列表

alien_0 = []
#创建30个绿色的外星人
for alien_number in range(30):
    new_alien = {'color':'green','points':'5','speed':'lower'}
    alien_0.append(new_alien)
#显示前5个外星人
for alien in alien_0[:5]:
    print(alien)
#显示创建了多少个外星人
print(f"Total number of alien:{len(alien_0)}")

6.3.2 在字典中存储列表
1.在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表

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

notice:列表和字典的嵌套层级不应太多
6.3.3 在字典中存储字典

users = {
     'aeinstein':{
         'first':'albert',
         'last':'einsten',},
      'mcurice':{
          'first':'marie',
          'last':'curie',},
     }
for username, user_info in users.items():
    print(f"\nUsername:{username}")
    full_name = f"{user_info['first']}{user_info['last']}"
    print(f"\tFull name:{full_name.title()}")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值