python——字典

使用字典

  • 字典是一系列键-值对,每一个键都与一个值相关联
  • 与键相关联的值可以是数字、字符串、列表乃至字典。
  • 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
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.添加键-值对
  • 字典是一种动态结构,可随时在其中添加键-值对。
  • 要添加键-值对,可依次指定字典名、用方括号括起的键和相关联的值。
alien_0 = {'color':'green','points':5}
print(alien_0)
alien_0['x_position']=5
alien_0['y_position']=25
print(alien_0)

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

键-值对的排列顺序与添加顺序不同,python不关心键-值对的添加顺序,而只关心键和值之间的关联关系。

3.创建一个空字典
  • 先使用一对空的花括号定义一个字典,再分行添加各个键-值对。
alien_0={}
alien_0['color']='green'
alien_0['points']='5'
print(alien_0)

{'points': '5', 'color': 'green'}
4.修改字典中的值
  • 要修改字典中的值,可依次指定字典名、用方括号括起来的键以及与该键相关联的值。
alien_0={}
alien_0['color']='green'
alien_0['color']='yellow'
alien_0['points']='5'
print(alien_0)

{'points': '5', 'color': 'yellow'}
5.删除键-值对
  • 对于字典中不再需要的信息,可使用del语句将对应的键值对彻底删除。
alien_0={}
alien_0['color']='green'
alien_0['points']='5'
del alien_0['points']
print(alien_0)

{'color': 'green'}
6.由类似对象组成字典
  • 确定需要使用多行来定义字典时,在输入花括号后按回车键,再在下一行缩进四个空格,指定第一个键值对,并在它后面加上一个逗号。此后再按回车键时,文本编辑器将会自动缩进后续键值对,且缩进量与第一个键值对相同。
price={
    '水杯':'20yuan',
    '口香糖':'10yuan',
    '口红':'200yuan',
    '帆布包':'20yuan',
}
print("这一个星期买的水杯价格是:" + price['水杯'])

遍历字典

1.遍历所有的键值对
  • 要编写用于遍历字典的for循环,可声明两个变量,用于存储键值对中的键和值。
  • for语句的第二部分包含字典名和方法items(),它返回一个键值对列表,接下来,for循环依次将每个键值对存储到指定的两个变量中。
favorite_languages = {
    'jen':'python',
    'sarah':'c',
    'edward':'java',
    'justin':'php'
}

for name,language in favorite_languages.items():
    print(name.title() + "'s favorite languages is " + language.title())

Edward's favorite languages is Java
Jen's favorite languages is Python
Sarah's favorite languages is C
Justin's favorite languages is Php
2.遍历字典中的所有键
  • 使用方法key(),可以不需要使用字典中的值。
favorite_languages = {
    'jen':'python',
    'sarah':'c',
    'edward':'java',
    'justin':'php'
}

for name in favorite_languages.keys():
    print(name.title())

Jen
Sarah
Edward
Justin

遍历字典时,会默认遍历所有的键,因此如果将上述代码中的for name in favorite_languages.keys(): 替换为 for name in favorite_languages: 输出将不会改变。

friends =['phil','justin']
for name in favorite_languages.keys(): 
    if name in friends:
        print("Hi " + name.title() +", i see your favorite languages is "+ favorite_languages[name].title()+"!")
    else:
        print(name.title()+" , please take our poll!")
        
Sarah , please take our poll!
Jen , please take our poll!
Hi Justin, i see your favorite languages is Php!
Edward , please take our poll!
3.按顺序遍历字典中的所有值

-要以特定的顺序返回元素,可以在for循环中对返回的值进行排序。可以使用函数sorted()来获得按特定顺序排列的键列表的副本。

favorite_languages = {
    'jen':'python',
    'sarah':'c',
    'edward':'java',
    'justin':'php'
}

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!
Justin ,thank you for taking the poll!
Sarah ,thank you for taking the poll!
4.遍历字典中的所有值
  • 如果只需要字典中包含的值,可以使用方法value(),它返回一个值列表。
favorite_languages = {
    'jen':'python',
    'sarah':'c',
    'edward':'java',
    'justin':'php'
}

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

Php
C
Java
Python
  • 如果想要剔除重复项,可以使用集合(set),集合类似于列表,但是每个元素都必须是独一无二的。
6-6调查
  • 创建一个应该会接收调查的人员名单,其中有些人已经包含在字典中,而其他人未包含在字典中。
  • 遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢,对于还未参与调查的人,打印一条消息邀请他参加。
favorite_languages = {
    'jen':'python',
    'sarah':'c',
    'edward':'java',
    'justin':'php'
}
want_join={
    'jen':'python',
    'sarah':'c',
}

for name in want_join:
    if name in favorite_languages.keys():
        print(name , ", thank you for this investigate.")
    else:
        print(name ," ,please take our investigate.")

嵌套

1.字典列表
  • 一个外星人列表,每个外星人是一个字典。
alien_0={'color':'green','points':5}
alien_1={'color':'red','points':10}
alien_2={'color':'yellow','points':2}

alien=[alien_0,alien_1,alien_2]
print(alien)

[{'color': 'green', 'points': 5}, {'color': 'red', 'points': 10}, {'color': 'yellow', 'points': 2}]
#创建一个用于存储外星人的空列表
aliens=[]
#创建30个绿色的外星人
for alien_number in range(30):
    new_alien={'color':'green','points':5,'speed':'slow'}
    aliens.append(new_alien)
#显示前五个外星人
for alien in aliens[:5]:
    print(alien)
print('...')
#显示创建了多少个外星人
print("Total number of alien: " + str(len(aliens)))
for alien_number in range(30):
    new_alien={'color':'green','points':5,'speed':'slow'}
    aliens.append(new_alien)
#将前三个外星人修改,需要遍历一个只包含这些外星人的切片。
for alien in aliens[0:3]:
    if alien['color']=='green':
        alien['color']='yellow'
        alien['points']=3
        alien['speed']='medium'

for alien in aliens[:5]:
    print(alien)
print('...')

print("Total number of alien: " + str(len(aliens)))

进一步扩展这个循环,在其中加上一个elif代码块。

2.在字典中存储列表
  • 需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。

如果将每个的回答都存储在一个列表中,被调查者就可以选择多种喜欢的语言,在这种情况下,当我们遍历字典时,与每个被调查者相关联的都是一个语言列表,而不是一种语言。在遍历字典的for循环中,需要再使用一个for循环来遍历与被调用者相关联的语言列表。

favorite_languages = {
    'jen':['python','ruby'],
    'sarah':'c',
    'edward':['java','go'],
    'justin':['php','java'],
}
for name,languages in favorite_languages.items():
    print("\n" + name.title() + "'s favorite languages are: ")
    for language in languages:
        print("\t" + language.title())
        
Justin's favorite languages are: 
 Php
 Java

Jen's favorite languages are: 
 Python
 Ruby
 
Sarah's favorite languages are: 
 C

Edward's favorite languages are: 
 Java
 Go
3.在字典中存储字典
  • 在字典中将用户名作为键,将每位用户的信息存储在一个字典中,并将该字典作为与用户名关联的值。
users ={
    'aeinstein':{
        'first':'albert',
        'last':'einstein',
        'location':'princetion',
    },
    '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())


username: aeinstein
 Full name:Albert Einstein
 Location: Princetion

username: mcurie
 Full name:Marie Curie
 Location: Paris
6.9喜欢的地方
favorite_places={
    'huijuan':{
        'place1':'nanchang',
        'place2':'shanghai',
        'place3':'heze',
    },
    'xuewen':{
        'place1':'nanchang',
        'place2':'shanghai',
        'place3':'dongying',
    },
}

for name,place in favorite_places.items():
    print("\nname: "+name.title())
    places = place['place1']+' '+place['place2']+' '+place['place3']
    print("\tplaces: "+places.title())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值