python-字典

介绍

Python字典可以把相关信息都关联起来。
本章将学习如何遍历字典,存储字典的列表,存储列表的字典和存储字典的字典。

一个简单的字典

存储外星人信息的字典。

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

使用字典

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

访问字典中的值

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

alien_0={'color':'green'}
print(alien_0['color'])

添加键值对

字典是一种动态结构,可随时在其中添加键值对。

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

注意:键值对的排列顺序和添加顺序不同,Python不关心键值对的添加顺序,而只关心键和值之间的关联关系。

创建一个空字典

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

修改字典中的值

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

alien_0{'color':'green'}
alien_0['color']='yellow'
print(alien_0)

删除键值对

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

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

由类似对象组成的字典

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

遍历字典

遍历字典的方式:遍历字典的所有键值对,键或值。

遍历键值对

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


favorite_languages ={
    'jen':'python',
    'sarah':'c',
    'edward':'ruby',
    'phil':'python',
}
for name, language in favorite_languages.items():
    print(name.title()+"'s favorite language is"+language.title()+".")

提示:方法.items(),以列表返回视图对象,是一个可遍历的key / value对。

遍历字典中所有的键

在不需要使用字典中的值时,方法keys()很有用。

favorite_languages ={
    'jen':'python',
    'sarah':'c',
    'edward':'ruby',
    'phil':'python',
}
for name in favorite_languages.keys():
    print(name.title())

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

在上述遍历中添加一条条件:当名字为你指定朋友的名字时,打印一条消息,指出其喜欢的语言。

favorite_languages ={
    'jen':'python',
    'sarah':'c',
    'edward':'ruby',
    'phil':'python',
}
friends=['jen','edward']
for key in favorite_languages.keys():
    print(name.title())
    if key in friends:
        print(hi +name.title()+", I see your favorite language is"+favorite_languages[name].title()+"!")

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

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

favorite_languages ={
    'jen':'python',
    'sarah':'c',
    'edward':'ruby',
    'phil':'python',
}
for name in sorted(favorite_languages.keys()):
    print(name)

遍历字典中所有的值

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

favorite_languages ={
    'jen':'python',
    'sarah':'c',
    'edward':'ruby',
    'phil':'python',
}
for value in favorite_languages.values():
    print(values)

如果要剔除重复项,可以使用函数集合set(),集合类似于列表。

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

动手试一试

有一个河流字典,遍历它,并打印出它流经哪个国家。

rivers={
    'nile':'egypt',
    'honghe':'china',
    'changjiang':'china',
}
for river,country in rivers.items():
    print(river+"'s through"+country+'.')

创建一个可能会接受调查的名单,有些人包含在字典中了,有些人不在字典中,对于已经参与调查的人,打印一条消息表示感谢,对于没参与调查的人,打印一条邀请信息。

interview={
    'zhang':'canyu',
    'wang':'canyu',
    'liu':'canyu',
    'zhao':'canyu',
}
man_list=['zhang','xu','wang','liu','zhao','zhu','tie','qing']
for name in man_list:
    if name in interview.keys():
        print(f"{name} thank you join this interview!")
    else:
        print(f"{name} Hope you will come and join us for an interview.")

嵌套

将一系列字典存储在列表中,或将列表作为值存储在字典中,称为嵌套。
你可以在列表中嵌套字典,在字典中嵌套列表,甚至在字典中嵌套字典。

字典列表

举例:创建一个外星人列表,其中每个外星人都是一个字典,包含有外星人的各种信息。

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)
print(aliens)
使用range()函数,生成多个外星人。
aliens=[]
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("total number of aliens:"+str(len(aliens)))
print(aliens)
将前三个外星人修改为黄色,速度为中等且值10个点:
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['speed']='medium'
        alien['points']=10
for alien in aliens[0:5]:
    print(alien)

在字典中存储列表

pizza={
    'crust':'thick',
    'toppings':['mushrooms','extra cheese'],
}
print("you order a"+pizza['crust']+"-crust pizza"+"with the following toppings:")
for topping in pizza['toppings']:
    print("\t"+topping)
每个人喜欢的语言统计:
favorite_languages={
    'jen':['python','rubby'],
    'sarah':['c'],
    'edward':['ruby','go'],
    'phil':['python','haskell'],
}
for name,languages in favorite_languages.items():
    print("\n"+name.title()+"'s favorite languages are:")
    for language in languages:
        print('\t'+language.title())
注意:列表和字典的嵌套层级不应该太多。如果嵌套层级比前面示例多得多,很可能有更简单的解决方案。

在字典中存储字典

可以在字典中嵌套字典,但这样做,代码可能很快复杂起来。

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

使用函数和方法归纳

方法

.items()
.keys()
.values()

函数

sorted()
set()    
range() 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ee .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值