python 字典

字典

在python中,字典是一系列的键-值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可以将任何python对象用作字典的值。
字典用放在花括号中的一系列键-值对表示
alien={'color':'green','points':5}
键-值对是两个相关联的值,指定键时,python将返回与之相关联的值。键和值之间用冒号分割,而键-值对之间用逗号分隔。

访问字典中的值

要获取与键相关联的值,可依次指定字典名和放在方括号内的键

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

添加键值对

要添加键值对,可依次指定字典名、用方括号括起来的键和后面加上(=)相关联的值。

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

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

空字典

有时候,在空字典中添加键-值对是为了方便,而有时候必须这样做。
alien={}
使用字典来存储用户提供的数据或在编写能自动生成大量键-值对的代码时,通常都需要先定义一个空字典。

修改字典中的值

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

alien={'color':'green'}
alien['color']='yellow'

删除键-值对

使用del语句,必须指定字典名和要删除的键

alien={'color':'green','points':5}
print(alien)
del alien["points"]
print(alien)

注意:del永久删除键值对

由类似对象组成的字典

在前面的示例中,字典存储的是一个对象的多种信息,(游戏中的一个外星人的多种信息)也可以使用字典来存储众多对象的同一种信息。假如,要调查多人,问他们喜欢的语言。

favorite_languages={
	'tom':'c',
	'jack':'python',
	'jaey':'java',
	}

最后一个右花括号,缩进四个空格,使其与字典中的键对齐。
另外一个不错的做法是在最后一个键-值对后面也加上逗号,为以后在下一行添加键-值对做准备。

遍历字典

要编写用于遍历字典的for循环。第一部分可声明两个变量,用于存储键-值对中的键和值。对于这两个变量,可以使用任意名称

favorite_languages={
	'tom':'c',
	'jack':'python',
	'jaey':'java',
	}
for key,value in fauorite_languages.items():
	print("\nKey"+key)
	print("value"+value)

for 语句的第二部分包含字典名和方法items(),它返回一个键-值对列表。for循环依次将每个键-值对存储到指定的两个变量中。
注意:即使遍历字典时,键-值对的返回顺序也与存储顺序不同,python不关心键值对的存储顺序,而只跟踪键和值之间的关联关系。

遍历字典中所有的键

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

favorite_languages={
	'tom':'c',
	'jack':'python',
	'jaey':'java',
	}
for name in favorite_languages.keys():
	print(name.title())

可以省略.keys(),结果不变,遍历字典时,默认遍历所有的键

if ‘tim’ not in favorite_languages.keys():
	print("sorry")

方法keys()并非只能用于遍历;它返回一个列表,可以使用not in比较,看里面是否包含tim,没包含则输出

遍历字典中的所有值

可以使用方法values(),它返回一个值列表,而不包含任何键。

favorite_languages={
	'tom':'c',
	'jack':'python',
	'jaey':'java',
	}
for zhi in favorite_languages.values():
	print(zhi.title())

for语句提取字典中的每个值,并将它们依次存储到变量zhi中。
这个提取没有考虑到值是否重复,如果列表中的键值对很对,包含很多重复的值,为了剔除重复项,可使用集合(set)。集合类似于列表,但每个元素都必须时独一无二的。

favorite_languages={
	'tom':'c',
	'jack':'python',
	'jaey':'java',
	'tim':'python',
	}
for zhi in set(favorite_languages.values()):
	print(zhi.title())

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

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

字典总是明确地记录键和值之间地关联关系,但获取字典地元素时,获取顺序是不可预测地。
要以首字母地特定地顺序返回元素,一种办法是在for循环中对返回地键进行排序。可使用函数sorted()。

favorite_languages={
	'tom':'c',
	'jack':'python',
	'jaey':'java',
	'tim':'python',
	}
for name in sorted(favorite_languages.keys()):
	print(name.title())

嵌套

在列表中存储字典

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

xiaoming={'xing':'xiao','age':'18'}
lining={'xing':'li','age':'22'}
aliens=[xiaoming,lining]
for alien in aliens:
	print(alien)

在字典中存储列表

每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。

favorite_languages={
	'tom':['c','python',java],
	'jack':['python','ruby']
	'jaey':'java',
	'tim':'python',
	}
for name,languages in favorite_languages.items():
	print("\n"+str(name))
	for language in languages:
		print("\t"+language)

在字典中存储字典

user={
	'huangxiaoming':{
		'first':'huang',
		'last':'xiao',
		'location':'shanghai',
		},
	'chenglong':{
		'first':'cheng',
		'last':'long',
		'location':'beijing',
		},		
}
for username,user_info in user.items():
	print("\nUsername: "+username)
	full_name=user_info['first']+" "+user_info['last']
	location=user_info['location']
	print(full_name)
	print(location)
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值