Python——字典

  1 ##字典
  2 '''
  3 字典是一系列键 — 值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。
  4 事实上,可将任何Python对象用作字典中的值。
  5 '''
  6 ##初始化book字典
  7 book={'类别':'教育书籍','书名':'python从入门到实践'}
  8 print(book)
  9 print(book['类别'])
 10 print(book['书名'])
 11 ##访问字典的值
 12 book_name=book['书名']
 13 print(book_name)
 14 ##添加键值对(字典是动态结构,可随时添加键值对。可依次指定字典名、用方括号括起的键和相关联的值)
 15 book['数量']=20
 16 book['作者']='Eric Matthes'
 17 print(book)
 18 ##创建空字典,并添加键值对
 19 phone={}
 20 phone['类别']='智能机'
 21 phone['名称']='华为'
 22 print(phone)
 23 ##修改字典中的值
 24 phone['名称']='苹果'
 25 print(phone)
 26 phone={'名称':'小米',}##对字典重新赋值的操作
 27 print(phone)
 28 ##案例:
 29 '''
 30 对一个能够以不同速度移动的外星人的位置进行跟踪。为此,我们
 31 将存储该外星人的当前速度,并据此确定该外星人将向右移动多远:
 32 '''
 33 alien={'x_position':0,'y_position':25,'speed':'medium'}
 34 print("orignal x_position:"+str(alien['x_position']))
 35 # 向右移动外星人
 36 # 据外星人当前速度决定将其移动多远
 37 if alien['speed']=='slow':
 38     x_increment=1
 39 elif alien['speed']=='medium':
 40     x_increment=2
 41 else:
 42     x_increment=3
 43 # 新位置等于老位置加上增量
 44 alien['x_position']+=x_increment
 45 print('new x_position:'+str(alien['x_position']))
 46 
 47 ##删除键值对
 48 element={'名称':'字典元素','数量':20,'大小':8}
 49 print(element)
 50 del element['大小']
 51 print(element)
 52 ##字典的另外一种写法
 53 favorite_languages={
 54     'jen':'python',
 55     'ben':'java',
 56     'edward':'ruby',
 57     'phil':'c',
 58 }
 59 ###遍历字典(遍历所有的键 —值对)
 60 print('遍历favorite_languages所有的键-值对:')
 61 for key,value in favorite_languages.items():
 62     print('\nkey:'+key)
 63     print('value:'+value+'\n')
 64 '''
 65 注意,即便遍历字典时,键 — 值对的返回顺序也与存储顺序不同。Python不关心键 — 值对的存
 66 储顺序,而只跟踪键和值之间的关联关系。
 67 '''
 68 ##按顺序遍历字典的所有键
 69 print('按顺序遍历字典的所有键:')
 70 for key in favorite_languages.keys():
 71     print(key)
 72 ##按顺序遍历字典的所有值:
 73 print("按顺序遍历字典的所有值:")
 74 for value in favorite_languages.values():
 75     print(value)
 76 '''
 77 上面这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,这也许不是问题,但如果被调查者很多,
 78 最终的列表可能包含大量的重复项。为剔除重复项,可使用集合(set)。集合类似于列表,但每个元素都必须是独一无二的:
 79 '''
 80 favorite_food={
 81     '小明':'红烧肉',
 82     '康康':'莲藕',
 83     '增哥':'红烧肉',
 84     '强哥':'火锅',
 85 }
 86 print('按顺序遍历字典的所有值,有重复项:')
 87 for food in favorite_food.values():
 88     print(food)
 89 ###使用集合set()剔除重复项
 90 print('使用集合set()剔除重复项之后的值:')
 91 for food in set(favorite_food.values()):
 92     print(food)
 93 ##嵌套字典
 94 '''
 95 有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。你
 96 可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。
 97 '''
 98 my_list1={'color':'red','point':5}
 99 my_list2={'color':'green','point':6}
100 my_list3={'color':'black','point':8}
101 '''嵌套字典'''
102 my_list=[my_list1,my_list2,my_list3]
103 print('遍历这个嵌套字典列表:')
104 for my_list_show in my_list:
105     print(my_list_show)
106 '''案例2:'''
107 
108 # 创建一个用于存储外星人的空列表
109 print('----------------------------------')
110 print('------------外星人-------------')
111 alien_dict=[]
112 #创建30个外星人
113 for alien_number in range(30):
114     new_alien={'color':'green','point':5,'speed':'slow'}
115     alien_dict.append(new_alien)
116 #修改外星人的值
117 for alien_show in alien_dict[:3]:
118     if alien_show['color']=='green':
119         alien_show['color']='yellow'
120         alien_show['speed']='fast'
121         alien_show['种类']='精英'
122 #显示前五个外星人
123 print('显示前五个外星人')
124 for alien_show in alien_dict[:5]:
125     print(alien_show)
126 
127 ## 显示创建了多少个外星人
128 print('共创建了外星人有:'+str(len(alien_dict)))
129 
130 ##在字典中存储列表
131 #披萨的信息
132 pizza={
133     '厨师':'汤米',
134     '配料':['生菜','鸡蛋','面粉','牛肉']
135 }
136 #概述所点披萨
137 print('披萨的厨师是:'+str(pizza['厨师'])+'\n配料有:')
138 for topping  in pizza['配料']:
139     print('\t'+topping)
140 love_language={
141     '小明':['C语言','Python'],
142     '强哥':['C语言','shell'],
143     '平哥':['python'],
144     '康康':['C#'],
145 }
146 for name,languages in love_language.items():
147     print('\n'+name+'喜欢的语言有:')
148     for lang in languages:
149         print(lang)
150 ##在字典中存储字典和列表
151 print('------------------------------------')
152 print('打印张三丰和王重阳的信息:')
153 users={
154     '张三丰':{
155         '姓氏':'',
156         '名称':'三丰',
157         '居住地':'武当山',
158         '门派':'武当派',
159         '嫡传弟子':['宋远桥','俞莲舟','俞岱岩','张松溪','张翠山','殷梨亭','莫声谷']
160     },
161     '王重阳':{
162         '姓氏':'',
163         '名称':'重阳',
164         '居住地':'终南山',
165         '门派':'全真教',
166         '嫡传弟子':['马钰','谭处端','刘处玄','丘处机','王处一','郝大通','孙不二']
167     }
168 }
169 for user_name,user_info in users.items():
170     print('姓名:'+user_name)
171     last_name=user_info['姓氏']
172     first_name=user_info['名称']
173     home=user_info['居住地']
174     family=user_info['门派']
175     child=user_info['嫡传弟子']
176     print('姓氏:'+last_name)
177     print('名称:'+first_name)
178     print('居住地:'+home)
179     print('门派:'+family)
180     print('嫡传弟子:'+str(child))
181     print('\n\n\n')

 

posted @ 2020-05-08 12:48  囹圄  阅读(243)  评论(0编辑  收藏  举报