一天快速入门Python语法基础之字典

#一、使用字典
#1.字典的定义
#在python中,字典是一系列键值对,每个键都与一个值相关联,可以使用键来访问与之相关联的值,
#与键相关联的值可以是数字、字符串、列表、乃至字典。可将任何Python对象用作字典中的值。
#键和值之间用逗号分隔,在字典中想存储多少个键-值都可以
#一些坦克,它们的颜色和分数都不同
tank_0={'color':'green','points':5}  #color就是个键,green就是对应的值

#2.访问字典中的值
tank_0={'color':'green','points':5}
print(tank_0['color'])
print(tank_0['points'])
#如果你消灭这个坦克,可以获得其分数
my_points=tank_0['points']
print("你获得的分数"+str(my_points))

#3.添加键-值对
#字典是一种动态结构,可随时在其中添加键-值对。
#要在tank_1中添加 横纵坐标
tank_1={ }
tank_1['color']='red'
tank_1['points']=10
tank_1['x_position']=0
tank_1['y_position']=25
print(tank_1)
#使用字典来存储用户提供的数据或编写能自动生成大量键-值对的代码,通常需要先定一个空字典

#4.修改字典中的值
#需将tank_0的颜色改为蓝色
tank_0={'color':'green','points':5}
print(tank_0['color'])
tank_0['color']='blue'
print("坦克0的新颜色"+tank_0['color'])
#对一个以不同速度移动的坦克的位置进行追踪
#为此我们先存储该坦克的当前速度,并据此确定坦克将向右移动多远
tank_2={'color':'yellow','x_position':20,'y_position':30,'speed':'medium'}
#向右移动坦克
#根据坦克当前速度决定其移动多远
if tank_2['speed']=='slow':
    x_increment=1
elif tank_2['speed']=='medium':
    x_increment=2
else:
    x_increment=3
tank_2['x_position']=tank_2['x_position']+x_increment
print("新位置:"+str(tank_2['x_position']))

#5.删除键-值对
#用del语句删除键-值对,删除的键-值对永远消失
tank_0={'color':'green','points':5}
del tank_0['points']
print(tank_0)

#二、遍历字典
#1.遍历所有键-值对
user={'username':'haha','sex':'man','truename':'Tom'}
for key,value in user.items(): #方法item返回的是一个键-值对列表
    print(key)
    print(value)
#即便遍历字典时,键-值对的返回顺序也与存储顺序不同。Python不关心键值的存储顺序,只跟踪键和值之间的联系

#2.遍历字典中的所有键
user={'username':'haha','sex':'man','truename':'Tom'}
for key in user.keys(): #提取字典user中的所有键,并依次将他们存储到变量key中
    print(key)
#遍历字典是会默认遍历所有的键,因此for key in user.keys(): 可以替换为for key in user: 输出将不变

#3.按顺序遍历字典中的所有键
languages={'tom':'python','phil':'java','robin':'c','jack':'ruby'}
for name in sorted(languages.keys()):
    print(name.title())

#4.遍历字典中的所有值
#如果你只想要字典中包含的值,可使用values()方法,它返回一个值列表,而不包含任何键
languages={'tom':'python','phil':'java','robin':'c','jack':'ruby'}
for value in languages.values():
    print(value.title())
#这种方法提取字典中的值,而没有考虑是否重复,当涉及大量重复项时,为剔除重复项,可使用集合set
languages={'tom':'python','phil':'java','robin':'c','jack':'python'}
for value in set(languages.values()):
    print(value.title())


#三、嵌套
#1.字典列表
#字典tank_0包含一个坦克的各种信息,但无法存储其他坦克的信息,
#办法是创建一个坦克列表,其中每个坦克都是一个字典,
tank_0={'color':'green','points':5}
tank_1={'color':'red','points':15}
tank_2={'color':'blue','points':25}
tanks=[tank_0,tank_1,tank_2]
for tank in tanks:
    print(tank)

#坦克不止三个,且每个坦克都使用代码自动生成
#创建一个用于存储坦克的空列表
tanks=[ ]
#创建30个绿色坦克
for tank_number in range(30):
    new_tank={'color':'green','points':5,'speed':'slow'}
    tanks.append(new_tank)
#显示前5个坦克
for tank in tanks[:5]:
    print(tank)
print("...")
#显示共创建了多少坦克
print("总共"+str(len(tanks)))

#2.在字典中存储列表
#drink饮料包含两方面信息:包装材料,和配料列表
drink={
    'package':'plastic',
    'ingredient':['water','apple']
    }
print(drink)
#3.在字典中存储字典
users={
    'username_1':{
        'first':'tom',
         'last':'guo',
        'address':'beijing'
    },
    'username_2':{
        'first':'jack',
        'last':'li',
        'address':'shanghai'
    }
}

参考:《Python编程:从入门到实践》,作者Eric Matthes,译者袁国忠,由人民邮电出版社于2016年7月出版

posted @ 2018-03-18 02:24  锅锅7533  阅读(270)  评论(0)    收藏  举报