python学习笔记:字典

2018-06-17 23:42:31来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

字典
一个简单的字典:

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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python装饰器探究与参数的领取

下一篇:从CentOS安装完成到生成词云python学习日记