Python日记Day_5 字典、嵌套

《Python编程从入门到实践》

第六章 字典

在Python中,字典是一系列的 键-值对 。每一个键都与一个值相关联,你可以通过键来访问相关联的值。与键相关联的值可以是数字,字符串,列表乃至字典。任何值都可以作为字典中的值。

①使用和访问字典的键值对

0.字典名={‘键0’:‘值0’,‘键1’:‘值1’,‘键2’:‘值2’}*

键值之间用冒号分隔开,而键值对之间用逗号分隔。要获取与键相关联的值,可以指定字典名和放在花括号内的键。(有没有感觉像C语言的指针 0.0 >.< )

alien_0={'color':'green','point':'5'}
print(alien_0['color'])
print(alien_0['point'])
new_point=alien_0['point']
print("You got "+str(new_point) + ' points.')
green
5
You got 5 points.

1. 添加键值对
字典是一种动态结构,可随时添加键值对。要添加键值对,可依次指定字典名,用方括号括起的键和相关联的值。(Python不关心键值对的添加顺序问题,只关心键值对之间的关联)

alien_0={'color':'green','point':'5'}
alien_0['x_position']=13
alien_0['y_position']=14
print(alien_0)
#输出:
{'color': 'green', 'point': '5', 'x_position': 13, 'y_position': 14}

2. 先创建一个空字典

alien_0={}
alien_0['color']='green'
alien_0['point']=5
print(alien_0)
#输出:
{'color': 'green', 'point': 5}

3. 修改空字典
本质就是覆盖键关联的值

alien_0={'color':'green','point':'5'}
alien_0['color']='yellow'
print(alien_0)
#输出:
{'color': 'yellow', 'point': '5'}
alien_0={'color':'green','x_position':0,'speed':'medium'}
print('original_position: '+str(alien_0['x_position']))
if alien_0['speed'] == 'slow':
    x_increase = 1
elif alien_0['speed'] == 'medium':
    x_increase = 2
elif alien_0['speed'] == 'fast':
    x_increase = 3
alien_0['x_position'] = x_increase + alien_0['x_position']
print('new_position: '+str(alien_0['x_position']))
#####
original_position: 0
new_position: 2

4. 删除键值对

del 字典名[‘键’]
dict.clear() # 清空字典
del dict # 删除字典

del dict,但这会引发一个异常,因为用执行 del 操作后字典不再存在:

alien_0={'color':'green','x_position':'5','speed':'medium'}
print(alien_0)
del alien_0['speed']
print(alien_0)
#
{'color': 'green', 'x_position': '5', 'speed': 'medium'}
{'color': 'green', 'x_position': '5'}

注意:删除的键值对永远消失了
5. 有类似对象组成的字典

competitors={
    'theshy':'wansn',
    'feaker':'daijnu',
    'jacklove':'zhujail'
    }
print('theshy '.title()+'is ' +competitors['theshy']+"'s idol!")

②遍历字典

1. 遍历键值对

方法:for key,value in competitors.items():
键 ,值 都要带上,并且 in 字典名 .items():
print(key)
print(value )

competitors={
    'theshy':'wansn',
    'feaker':'daijnu',
    'jacklove':'zhujail'
    }
for key,value in competitors.items():
    print('key:'+key)
    print('value:'+value)
key:theshy
value:wansn
key:feaker
value:daijnu
key:jacklove
value:zhujail

2. 遍历字典所有的键

方法:for key in competitors.keys():
键 要带上,并且 in 字典名 .keys():
print(key)

competitors={
    'theshy':'wansn',
    'feaker':'daijnu',
    'jacklove':'zhujail'
    }
for key in competitors.keys():#for key in competitors:
    print(key)
    #
theshy
feaker
jacklove

按顺序遍历字典中所有的键
sorted(字典名.xxxx,reverse = True)

competitors={
    'theshy':'wansn',
    'feaker':'daijnu',
    'jacklove':'zhujail'
    }
for key in sorted(competitors.keys()):
    print(key.title())
for key in sorted(competitors.keys(),reverse=True):
    print(key.title())
##
Feaker
Jacklove
Theshy
Theshy
Jacklove
Feaker

2. 遍历字典所有的值
类比,不赘述了。(顺序遍历)
可自行验证下面代码的输出。

competitors={
    'theshy':'wansn',
    'feaker':'daijnu',
    'jacklove':'zhujail'
    }
for value in competitors.values():
    print(value.title())
for value in sorted(competitors.values()):
    print(value.title())
for value in sorted(competitors.values(),reverse=True):
    print(value.title())

③嵌套

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

1.在列表中存储字典
含列表的字典

alien_0={'color':'green','point':5}
alien_1={'color':'yellow','point':10}
alien_2={'color':'red','point':15}
aliens=[alien_0,alien_1,alien_2]
print(aliens)
for alien in aliens:
    print(alien)

2.在字典中存储列表

competitors={
    'theshy':['wansn','daijnu','zhujail'],
    'feaker':['daijnu','zhujail'],
    'jacklove':'zhujail'
    }
for x in competitors:
    print(x.title()+'s fans are :')
    print(competitors[x])
Theshys fans are :
['wansn', 'daijnu', 'zhujail']
Feakers fans are :
['daijnu', 'zhujail']
Jackloves fans are :
zhujail

3.在字典中存储字典
个人认为:字典中的字典的一个功能是:存储某个元素的特征。比如下例中,字典中的字典,为两个选手。而字典中的字典中存储的键值对则是选手的信息。
确保,字典中的字典’competitors_X的元素键相同,输出相同。

LOL={
    'competitors_1':{
        'name':'theshy',
        'loacation':'LPL',
    },
    'competitors_2':{
        'name':'jacklove',
        'loacation':'LPL',
    },
}
for dict_x,values in LOL.items():
    message = values['name'].title() + " plays in " + values['loacation']+'.'
    print(message)
Theshy plays in LPL.
Jacklove plays in LPL.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值