python学习笔记:字典
2018-06-17 23:42:31来源:未知 阅读 ()
字典
一个简单的字典:
alien_0 = {'color':'green','point': 5} print(alien_0['color']) print(alien_0['point'])
#运行结果:
green
5
字典和列表的区别:字典是{},列表是[],列表只能存储一系列元素,字典可以储存键-对关联关系
字典是一系列键-值对,每一个键都与一个值相对应,类似于映射关系,可以使用相应的键来访问值
字典中可以包含任意数量的键-值对
例如:可以用如下的代码实现:如果玩家击杀了一名外星人,会获得什么样的奖励等
1 alien_0 = {'color':'green','point': 5} 2 new_points = alien_0['point'] 3 print("You just earned " + str(new_points) + ' points!') 4 5 #运行结果是: 6 You just earned 5 points!
添加键-值对
字典是一种动态结构,类似于列表所以是可以修改的。
要想添加键-值对,可以依次制定字典名、用方括号括起的键和向关联的值,例如:
1 alien_0 = {'color':'green','point': 5} 2 print(alien_0) 3 4 alien_0['x_position'] = 0 5 alien_0['y_position'] = 25 #方括号内的是键,等式后面的是值 6 print(alien_0) 7 8 #运行结果: 9 {'point': 5, 'color': 'green'} 10 {'point': 5, 'x_position': 0, 'color': 'green', 'y_position': 25}
创建一个空字典:
先使用花括号来定义一个空的字典,然后再对字典进行添加内容,例如:
1 alien_0 = {} 2 alien_0['color'] = 'green' 3 alien_0['point'] = 5 4 print(alien_0) 5 6 #结果为: 7 {'point': 5, 'color': 'green'}
修改字典中的值,
要修改字典内的键值对应关系,可以使用:字典名['键'] = 值,来定义
1 alien_0['color'] = 'red' 2 alien_0['point'] = 10
上面的代码将原来的alien_0中的颜色和得分的值都进行了修改
下面使用if-elif-else来对字典里的值进行修改:
1 1 alien_0 = {'x_position':0,'y_position':25,'speed':'medium'} 2 2 print('original x-position: ' + str(alien_0['x_position'])) 3 3 4 4 if alien_0['speed'] == 'slow': #对当前速度进行判断 5 5 x_increment = 1 6 6 elif alien_0['speed'] == 'medium': 7 7 x_increment = 2 8 8 else: 9 9 x_increment = 3 10 10 alien_0['x_position'] = alien_0['x_position'] + x_increment #定义新的位置 11 11 print("new_x-position: " + str(alien_0['x_position'])) 12 #输出的结果为: 13 original x-position: 0 14 new_x-position: 2
删除键-值对:
使用命令del 字典名['键名']可以删除字典中的一个键-值对
1 alien_0 = {} 2 alien_0['color'] = 'green' 3 alien_0['point'] = 5 4 print(alien_0) 5 del alien_0['point'] #删除键-值对 6 print(alien_0) 7 #运行结果为: 8 {'point': 5, 'color': 'green'} 9 {'color': 'green'}
由类似对象组成的字典:
1 favourite_languages = { 2 'jen' : 'python', 3 'sara' : 'C', 4 'edward' : 'ruby', 5 'phil' : 'python', 6 } 7 print("Sara's favourite language is " + 8 favourite_languages['sara'].title() + 9 ".") 10 #运行结果: 11 Sara's favourite language is C
确定使用多行字典时,输入花括号后按回车,将后一个花括号放入下一行,然后输入键-值对,并且在每一个键值对后加逗号,结束后保证括号在下一行并且缩进四个空格,建议在最后一个键值对后也加一个逗号,方便以后增加键值对
遍历字典:
python的字典可能包含几个键对值也可能包含好几百万个键对值,有多种方法对字典内的值进行遍历
第一种:使用for循环来遍历,需要声明两个变量,可以使用任何名称命名这两个变量
10 usr = { 11 'user_name': 'efermi', 12 'first': 'enrico', 13 'last': 'fremi' 14 } 15 for key,value in usr.items(): #items()是一个方法,还有keys()等 16 print('\nKey: ' + key) 17 print('value: ' + value) 18 19 #运行结果为: 20 Key: first 21 value: enrico 22 23 Key: last 24 value: fremi 25 26 Key: user_name 27 value: efermi
注:在遍历字典的时候变量尽量使用对应的名称,会比较好理解,也易于阅读
如果遍历字典的时候只需要输出键或者值的话可以在使用keys(),或者不加,使用keys()会使得代码更易于理解
favourite_languages = { 'jen' : 'python', 'sara' : 'C', 'edward' : 'ruby', 'phil' : 'python', } for name in favourite_languages.keys(): print(name.title()) #运行结果为: Edward Phil Sara Jen
注:如果只需要输出值则是使用values()命令
遍历字典的时候会默认遍历所有的值,循环中可以使用当前的键来访问与之相关联的值
1 favourite_languages = { 2 'jen' : 'python', 3 'sara' : 'C', 4 'edward' : 'ruby', 5 'phil' : 'python', 6 } 7 friends = ['phil','sara'] 8 for name in favourite_languages.keys(): 9 print(name.title()) 10 11 if name in friends: 12 print(" Hi " + name.title() + 13 ",I see your favourite language is " + 14 favourite_languages[name].title() + "!") 15 #方法keys()不仅可以用于遍历,其返回值是一个列表包含所有的键的内容 16 #运行结果为: 17 Sara 18 Hi Sara,I see your favourite language is C! 19 Jen 20 Phil 21 Hi Phil,I see your favourite language is Python! 22 Edward
按顺序遍历字典中的值:
可以事先对字典中的键进行排序,然后按照新的顺序遍历字典:
1 favourite_languages = { 2 'jen' : 'python', 3 'sara' : 'C', 4 'edward' : 'ruby', 5 'phil' : 'python', 6 } 7 for name in sorted(favourite_languages.keys()): #对字典中的键按字母顺序排序 8 print(name.title() + ", thank you for taking this poll.") 9 #运行结果: 10 Edward, thank you for taking this poll. 11 Jen, thank you for taking this poll. 12 Phil, thank you for taking this poll. 13 Sara, thank you for taking this poll.
遍历字典中的所有值,使用.value()可以只访问字典里的值
1 favourite_languages = { 2 'jen' : 'python', 3 'sara' : 'C', 4 'edward' : 'ruby', 5 'phil' : 'python', 6 } 7 print("The following languages have been mention:") 8 for language in favourite_languages.values(): 9 print(language.title(),end = ",") #end 可以控制打印的格式,默认是end = "\n",表示换行 10 #运行结果: 11 The following languages have been mention: 12 Python,Python,C,Ruby,
嵌套:
有时候需要将一系列列表储存在列表中,将列表储存在字典中,称为嵌套,例如:
1 alien_0 = {'color':'green','point':5} 2 alien_1 = {'color':'red','point':10} 3 alien_2 = {'color':'blue','point':25} 4 aliens = [alien_0,alien_1,alien_2] 5 for alien in aliens: 6 print(alien) 7 #运行结果为: 8 {'point': 5, 'color': 'green'} 9 {'point': 10, 'color': 'red'} 10 {'point': 25, 'color': 'blue'}
现实情况中alien肯定远远不止3个,所以可以使用range()生成更多的外星人
1 aliens = [] 2 for alien_number in range(30): #循环30次 3 new_alien = {'color':'green','point':5,'speed':'slow'} 4 aliens.append(new_alien) 5 for alien in aliens[:5]: 6 print(alien) #d打印前五个字典 7 print("...") #之后的省略 8 print("total number of aliens:"+str(len(aliens))) 9 #运行结果: 10 {'point': 5, 'speed': 'slow', 'color': 'green'} 11 {'point': 5, 'speed': 'slow', 'color': 'green'} 12 {'point': 5, 'speed': 'slow', 'color': 'green'} 13 {'point': 5, 'speed': 'slow', 'color': 'green'} 14 {'point': 5, 'speed': 'slow', 'color': 'green'} 15 ... 16 total number of aliens:30
这些alien都有相同的特征,这个里面的所有的alien对于python来说都是独立的,所以可以独立地对上面的字典进行修改
可以使用for 和 if来修改某些外星人的颜色:
1 aliens = [] 2 for alien_number in range(30): #循环30次 3 new_alien = {'color':'green','point':5,'speed':'slow'} 4 aliens.append(new_alien) 5 6 for alien in aliens[0:3]: 7 if alien['color'] == 'green': 8 alien['color'] = 'yello' 9 alien['point'] = 10 10 alien['speed'] = 'medium' #修改前三个alien的信息 11 for alien in aliens[:5]: 12 print(alien) 13 #运行结果为: 14 {'color': 'yello', 'speed': 'medium', 'point': 10} 15 {'color': 'yello', 'speed': 'medium', 'point': 10} 16 {'color': 'yello', 'speed': 'medium', 'point': 10} 17 {'color': 'green', 'speed': 'slow', 'point': 5} 18 {'color': 'green', 'speed': 'slow', 'point': 5}
#在代码中可以使用if-elif-else:语句来实现对不同特征的alien的信息的修改
#经常在列表中包含大量的字典,其中每个字典都包含特定对象的众多信息
在字典中储存列表,
有时候我们需要在字典中储存列表而不是在列表中储存字典,例如如何描述顾客的披萨;
如果使用列表,只能储存要添加的披萨配料;如果使用字典则可以将其他信息包含在其中
pizza = {'crust':'thick', 'toppings':['mushroom','extra cheese'], } print("you ordered a "+pizza['crust']+"-crust pizza " + "with the following toppings:") #打印pizza中crust键中的内容 for topping in pizza['toppings']: print("\t" + topping) #遍历pizza中toppings键中的内容并将其打印出来 #运行结果为: you ordered a thick-crust pizza with the following toppings: mushroom extra cheese
每当在字典中想要用一个键关联多个值时就可以使用嵌套语句来执行,在之前的喜欢的语言程序中使用嵌套的话在遍历字典的时候,与每个被调查者相关联的都是一个语言列表,所以每一个人就可以选择多个语言
1 favourite_languages = { 2 'jen' : ['python','ruby'], 3 'sarah' : ['c'], 4 'edward' : ['ruby','go'], 5 'phil' : ['python','haskell'], 6 } 7 for name,languages in favourite_languages.items(): 8 print("\n" + name.title() + "'s favourite language is") 9 for language in languages: 10 print("\t" + language.title()) 11 #运行结果为: 12 Phil's favourite language is 13 Python 14 Haskell 15 16 Sarah's favourite language is 17 C 18 19 Jen's favourite language is 20 Python 21 Ruby 22 23 Edward's favourite language is 24 Ruby 25 Go
每一个关联的键都对应好几个值,第一个for循环用来输出人名,第二个for循环用来输出,每个人名下喜欢的全部语言
字典中储存字典
在字典中嵌套字典,这样子做的话可以使得代码很快的复杂起来,例如多个网站有多个用户,每一个用户都有自己独特的用户名,可在字典中将用户名作为键,然后将用户的信息储存到在一个字典中,并将这个字典和用户名键关联在一起
1 users = { 2 'aeinstein': { 3 'first': 'albert', 4 'last': 'einstein', 5 'location': 'princetion', 6 }, 7 'mcurie': { 8 'first': 'marie', 9 'last': 'curie', 10 'location': 'pariis', 11 }, 12 } 13 14 for user_name, user_info in users.items(): 15 print("\nUsername:" + user_name) 16 full_name = user_info['first'] + " " + user_info['last'] 17 location = user_info['location'] 18 19 print("\tfull name: " + full_name.title()) 20 print("\tlocation: " + location.title()) 21 #运行结果为: 22 Username:mcurie 23 full name: Marie Curie 24 location: Pariis 25 26 Username:aeinstein 27 full name: Albert Einstein 28 location: Princetion
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash