python学习笔记四.字典

一、使用字典

在python中,字典是一系列键-值对,可以使用键来获得相关联的值。

1.访问字典中的值
alien_0 = {'color':'green','points':5}          #定义一个字典
print(alien_0['color'])
new_points = alien_0['points']                 #获取相关值并存储在一个变量中
print("You just earned " + str(new_points) + " points!")  #访问变量
2.添加键值对
alien_0 = {'color':'green','points':5}
print(alien_0)

alien_0['x_position'] = 0     #添加新的键-值对,并赋值
alien_0['y_position'] = 25
print(alien_0)                #python不关心键值对打印顺序,只关注键值对之间的关联

3.创建一个空字典&修改字典中的值
alien_0 = {}                  #有时候为方便起见,先创建一个空字典
alien_0['color'] = 'green'    #将键值对添加进字典
alien_0['points'] = 5
print(alien_0)

print("\nThe color of alien_0 is " + alien_0['color'])
alien_0['color'] = 'yellow'    #将键关联的值修改为yellow
print("But now the color of alien_0 is " + alien_0['color'])

4.修改字典值的应用
#通过修改外星人字典的值,移动外星人的位置
alien_0 = {'x_position':0 ,'y_position':25 ,'speed':'medium'}
print("Original x-position is " + str(alien_0['x_position']))

if alien_0['speed'] == 'slow':
    x_increnment = 1
elif alien_0['speed'] == 'medium':
    x_increnment = 2
elif alien_0['speed'] == 'fast':
    x_increnment = 3

alien_0['x_position'] = alien_0['x_position'] + x_increnment
print("New alien_0's x-position is " + str(alien_0['x_position']))

alien_0['speed'] =  'fast'  #通过修改外星人字典的值,修改外星人的移动位置
print("\nNew alien_0's speed is " + str(alien_0['speed']) +
      ", and the x-position is " +str(alien_0['x_position']))
5.删除字典键值对
alien_0 = {'color': 'green', 'points': 5} 
print(alien_0) 
del alien_0['points']    #删除语句
print(alien_0)
6.由类似对象组成的字典

确定需要使用多行来定义字典时,在输入左花括号后按回车键,再在下一行缩进四个空格,指定第一个键—值对,并在它后面加上一个逗号。
此后你再次按回车键时,文本编辑器将自动缩进后续键—值对,且缩进量与第一个键—值对相同。
定义好字典后,在最后一个键—值对的下一行添加一个右花括号,并缩进四个空格,使其与字典中的键对齐。
另外一种不错的做法是在最后一个键—值对后面也加上逗号,为以后在下一行添加键—值对做好准备。

favorite_languages = {
    'jen': 'python',
    'sarah':'c',
    'edward':'ruby',
    'phil':'python'
    }                           #字典存储每个人喜爱的语言

print(favorite_languages)
print("Sarah's favorite language is " + favorite_languages['sarah'].title() + ".")     

二、遍历字典

1.遍历所有键-值对
user_0 = {
    'username': 'efermi',
    'first':'enrico',
    'last': 'fermi'
    }

for key,value in user_0.items():  #声明两个变量,用于存储键—值对中的键和值,item()方法把字典中每对key和value组成一个元组,并把这些元组放在列表中返回。
    print("\nkey: " + key )       #for循环依次将指定键值对赋到变量并输出
    print("value:" + value)       #Python不关心键—值对的存储顺序,而只跟踪键和值之间的关联关系

2.遍历字典上的所有键

在不需要使用字典值的时候,可以使用方法.keys()
遍历字典时默认遍历所有的键

favorite_languages = {
    'jen': 'python',
    'sarah':'c',
    'edward':'ruby',
    'phil':'python'
    }                           #字典存储每个人喜爱的语言

friends = ['phil','sarah']
for name in favorite_languages.keys():
    print(name.title())
    if name in friends:
        print("\n   Hi " + name.title() + ", I see your favorite language is  "
                                         + favorite_languages[name].title())


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

字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。可使用函数sorted()来获得按特定顺序排列的键列表的副本:

favorite_languages = {
    'jen': 'python',
    'sarah':'c',
    'edward':'ruby',
    'phil':'python'
    }                           #字典存储每个人喜爱的语言
for name in sorted(favorite_languages.keys()):  #sorted()获得按特定顺序排列的字典,
												.keys为遍历所有的键不使用值
    print(name.title() + ",thank you for taking the pall !")
4.遍历字典中所有的值

如果感兴趣的主要是字典包含的值,可使用方法values(),它返回一个值列表,而不包含任何键。

favorite_languages = {
    'jen': 'python',
    'sarah':'c',
    'edward':'ruby',
    'phil':'python'
    }                           #字典存储每个人喜爱的语言

print("The following languages have been mentioned:\n")
for language in favorite_languages.values():    #提取字典中的每个值,并将它们依次存储到变量language中
    print(language.title())                   #这种做法提取字典中所有的值,而没有考虑是否重复。

#为剔除重复项,可使用集合(set)
#通过对包含重复元素的列表调用set(),
#可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合。

print("\n")
for language1 in set(favorite_languages.values()):
    print(language1.title())

四、嵌套

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

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)

结果:
在这里插入图片描述

aliens = []                        #创建了一个空列表,用于存储接下来将创建的所有外星人
for alien_number in range(30):     #用range()创建30个绿色的外星人
    new_alien = {'clolr':'green','points':5,'speed':'slow'}
    aliens.append(new_alien)
#显示前五个外星人
for alien in aliens[:5]:           #显示前五个外星人
    print(alien)
print("……")

#显示创建了多少个外星人
print("Total number of aliens is :" + str(len(aliens)))
aliens = []                        #创建了一个空列表,用于存储接下来将创建的所有外星人
for alien_number in range(30):     #用range()创建30个绿色的外星人
    new_alien = {'color':'green','points':5,'speed':'slow'}
    aliens.append(new_alien)

#显示创建了多少个外星人
print("Total number of aliens is :" + str(len(aliens)))

#将前三个外星人修改为黄色的、速度为中等且值10个点
for alien in aliens[:3]:
    if alien['color'] == 'green':    #们编写了一条if语句来确保只修改绿色外星人
        alien['color'] = 'yellow'
        alien['speed'] = 'medium'
        alien['points'] = '10'
    elif alien['color'] == 'yellow':
        alien['color'] = 'red'
        alien['speed'] = 'fast'
        alien['points'] = 15

for alien in aliens[:5]:       #输出前五个外星人
    print(alien)
print("\n")


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']:    #为访问配料列表,我们使用了键'toppings'
    print("\t" + topping)

注意:列表和字典的嵌套层级不应太多。如果嵌套层级比前面的示例多得多,很可能有更简单的解决问题的方案。

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())

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值