字典模拟现实情境,面向对象的思想融入其中。
在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不是普通的字符变量,是列表,不能像上面一样连接。
