python学习之路(5)

写一个简单字典

alien_0 = {"color":"green","point":5}
print(alien_0["color"])
print(alien_0["point"]
green
5

字典模拟现实情境,面向对象的思想融入其中。

使用字典

在python中,字典是一系列键-值对。每个键都对应一个值,你可以使用键来访问值。与键想关联的可以是字典,数字,字符,列表。任何python对象都可以用来当作字典的值。字典中键和值用冒号分隔,键-值对之间用逗号分隔。具体实例看上面代码。

访问字典中的值

要访问字典中的值,可以指定字典名和放在方括号之中的键。
alien_0 = {"color":"green","point":5}
print(alien_0["color"])
print(alien_0["point"])

添加键-值对
字典是一种动态结构,可随时在其中添加键-值对。要添加键-值对,可依次指定字典名,用括号括起来的键和后面相关联的值。

alien_0 = {"color":"green","point":5}
alien_0['x'] = 10
alien_0['y'] = 20
print(alien_0)

注意,键-值对的排列顺序可能和添加顺序不同,python不关心键-值对的顺序,只关心键和值之间的关联关系。这和列表是完全不一样的,列表如果没有了索引,根本没办法操作。

创建一个空字典

alien_0 = {}
alien_0['color'] = 'green'
alien_0['point'] = 5

在存储用户提供的数据或在编写能自动生成大量键-值对的代码时,通常都需要定义一个空字典。注意,字符一定得要用 " "或’ ',这种符号圈起,不然python会默认为变量的,这样会报错。

修改字典的值

要修改字典的值,可依次指定字典名,以及用括号括起来的键,还有与键关联的新值。

alien_0 = {"color":"green","point":5}
alien_0["color"] = "red"
alien_0["point"] = 8
print(alien_0)

删除键-值对

对于字典中不需要的信息,可以用del语句删除相应的键-值对(彻底删除)。使用del语句必须指定字典名和键。删除的对永远消失。

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

有类似对象组成的字典

favorite_languages = {
	'jm':"python",
	'bob':'c',
	'tom':'shell',
	'sarah':'python',
	}

多行定义字典,在花括号之后按回车,在tab缩进四个空格,在写键-值对,再加逗号,后面文本编辑器会自动缩进,在定义最后再加一个逗号,方便以后添加键-值对,然后花括号结尾。

遍历字典

遍历所有的键-值对

user_0 = {
	'name':'bob',
	'first':'enrico',
	'last':'fermi',
	}
for key,value in user_0.items():
	print("\nKey:" + key)
	print("Value:" + value)

items()方法能够把字典变成键值对列表。然后可以用两个变量来取键和值。字典遍历和列表不一样,取出来的顺序全看心情,不过不影响,只要键值对关联就行。这里的Key前面加了换行符,可以和后来循环的值区分。

遍历所有键

user_0 = {
	'name':'bob',
	'first':'enrico',
	'last':'fermi',
	}
for k in user_0.keys():
	print(k)

name 
first
last

for k in user_0:
	print(k)
	
name 
first
last

遍历字典时,会默认遍历所有的键,所以不用keys()方法也是可以的,输出依然不变。keys()和items()方法一样,都是返回一个列表,一个包含键,一个包含键-值对

按顺序遍历字典中的键

字典本无序,何必要强排,要是想强排,循环中排序。 —打油诗

favorite_languages = {
	'jm':"python",
	'bob':'c',
	'tom':'shell',
	'sarah':'python',
	}

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

对取到的值使用sorted()进行排序,再循环取出。

遍历字典中的所有值

这个不用讲就是values()方法了,哈哈。也是返回一个列表,兄弟三都一样,items(),keys(),values()。

favorite_languages = {
	'jm':"python",
	'bob':'c',
	'tom':'shell',
	'sarah':'python',
	}
for v in favorite_languages.values():
	printa(v)

python
c
shell
python

for v in set(favorite_languages.values()):
	print(v)
python
c
shell

如果不想有重复值,可以用集合(set)来提出重复项,达到每个元素独一无二的结果。set()踢出重复值很好用,不过返回的是集合!!!不是列表。

嵌套

字典列表
有时候需要把字典存储在列表中,看字面意思,什么列表,字典列表,本质还是列表。指针数组,数组指针,可以对比理解,程序员的逻辑。。。

alien0 = {'color':'green','point':5}
alien1 = {'color':'red','point':10}
alien2 = {'color':'yellow','point':15}
aliens = [alien0,alien1,alien2]
for alien in aliens:
	print (alien)
	

首先创建了三个字典,表示三个外星人对象,然后把这三个外星人放到一个列表里面去,最后遍历列表。

字典中存储列表(列表字典)
为啥不叫列表字典,没大佬说,我自己这么叫。

students = {
	'name':'bob',
	'favorite_languages':['c','shell','python'],
	}
for  favorite_language in students['favorite_languages']:
	print(favorite_language)
c
shell
python

当字典中一个键需要关联多个值的时候,就需要列表来帮助了。嵌入一个列表非常舒适。这里也可以在外面先定义一个sts的列表变量替换列表,让代码看起来更美观。

字典中嵌套字典

网站中存储很多用户信息,就需要字典存储字典出马。

users = {
	'bob':{
		'home':'changsha',
		'likes':'c',
		},
	'tom':{
		'home':'guangdong',
		'like':'shell',
		}
	}
for name,messages in users.items():
	print("\nName:" + name)
	print(messages)

messages不是普通的字符变量,是列表,不能像上面一样连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值