《Python编程从入门到实践》_第六章_字典
一个简单的字典
#用户信息 user = {'name':'Frank','age':'23','city':'shanghai'} print(user['name']) print(user['age']) print(user['city']) #运行结果 Frank 23 shanghai
字典的结构
在python里面,字典就是一系列的 键-值,每个值都与一个值是一一对应的,键可以是数字、字符串、列表和字典。实际上,可以将任何python对象用作字典的值。
使用字典
访问字典中的值
要获取与键相关的值,可依次指定字典名和放在方括号内的键
#用户信息 user = {'name':'Frank','age':'23','city':'shanghai'} print(user) user['hobby']='reading' print(user) #运行结果 {'name': 'Frank', 'age': '23', 'city': 'shanghai'} {'name': 'Frank', 'age': '23', 'city': 'shanghai', 'hobby': 'reading'}
添加键-值对
字典是一种动态结构,可以随时添加,可依次指定字典名、用方括号括起来的键和对应的值
#用户信息 user = {'name':'Frank','age':'23','city':'shanghai'} print(user) user['hobby']='reading' print(user) #运行结果 {'name': 'Frank', 'age': '23', 'city': 'shanghai'} {'name': 'Frank', 'age': '23', 'city': 'shanghai', 'hobby': 'reading'}
修改值
给键对应值的重新赋值就可以了
#用户信息 user = {'name':'Frank','age':'23','city':'shanghai'} print(user) user['city']='nanjing' print(user) #运行结果 {'name': 'Frank', 'age': '23', 'city': 'shanghai'} {'name': 'Frank', 'age': '23', 'city': 'nanjing'}
删除键-值对
删除的键值对永远消失了
#用户信息 user = {'name':'Frank','age':'23','city':'shanghai'} print(user) del user['city'] print(user) #运行结果 {'name': 'Frank', 'age': '23', 'city': 'shanghai'} {'name': 'Frank', 'age': '23'}
常用的格式
#最喜欢的语言 favorite_languages = { 'Jen':'python', 'Frank':'c++', 'Tom':'JAVA', } print(favorite_languages) #运行结果 {'Jen': 'python', 'Frank': 'c++', 'Tom': 'JAVA'}
最后一个键值对后面可以加上一个逗号,也可以不加
遍历字典
要是for循环遍历字典,可以使用两个变量,用于存储键-值。方法items()返回一个键-值队列表。
#最喜欢的语言 favorite_languages = { 'Jen':'python', 'Frank':'c++', 'Tom':'JAVA', 'Sabar':'python', 'Bob':'ruby', } for k,v in favorite_languages.items(): print('\nkey: ',k) print('value: ',v) #运行结果 key: Jen value: python key: Frank value: c++ key: Tom value: JAVA key: Sabar value: python key: Bob value: ruby
如果只需要遍历键呢?
可以使用方法keys(),遍历字典时,默认遍历所有的键,因此如果不加keys(),并不会影响输出,加keys()可以便于代码的阅读和理解
#最喜欢的语言 favorite_languages = { 'Jen':'python', 'Frank':'c++', 'Tom':'JAVA', 'Sabar':'python', 'Bob':'ruby', } for name in favorite_languages.keys(): print('\nname: ',name) #运行结果 name: Jen name: Frank name: Tom name: Sabar name: Bob
怎么对键排排队?
这里我们就学到之前用的函数sorted(),临时的排队。
#最喜欢的语言 favorite_languages = { 'Jen':'python', 'Frank':'c++', 'Tom':'JAVA', 'Sabar':'python', 'Bob':'ruby', } for name in sorted(favorite_languages.keys()): print('\nname: ',name) #运行结果 name: Bob name: Frank name: Jen name: Sabar name: Tom
遍历字典中所有值
如果你只对字典中的值感兴趣,可以是用方法value()
#最喜欢的语言 favorite_languages = { 'Jen':'python', 'Frank':'c++', 'Tom':'JAVA', 'Sabar':'python', 'Bob':'ruby', } for value in favorite_languages.values(): print(value) #运行结果 python c++ JAVA python ruby
如上面的运行结果,我们看到了有重复的值,那么如何消除重复的值?
调用set()即可!
#最喜欢的语言 favorite_languages = { 'Jen':'python', 'Frank':'c++', 'Tom':'JAVA', 'Sabar':'python', 'Bob':'ruby', } for value in set(favorite_languages.values()): print(value) #运行结果 python JAVA c++ ruby
嵌套
有的时候,你需要将字典存储在列表里面,有的时候你需要将裂变存储在字典里面,有的时候你也许会将字典存储在字典里面,这种就称为嵌套。
在列表中放入字典
#创建10个绿色的外星人 aliens = [] #创建列表用来装外星人 for alien_number in range(10): new_alien = {'color':'green','speed':'low','points':5} aliens.append(new_alien) for alien in aliens[:5]: #显示前5个外星人属性 print(alien) print("....") print(aliens[0]['color']) #显示第一个外星人的颜色 #运行结果 {'color': 'green', 'speed': 'low', 'points': 5} {'color': 'green', 'speed': 'low', 'points': 5} {'color': 'green', 'speed': 'low', 'points': 5} {'color': 'green', 'speed': 'low', 'points': 5} {'color': 'green', 'speed': 'low', 'points': 5} .... green
在字典中存储列表
#最喜欢的语言 favorite_languages = { 'jen':['python','c++','Java'], 'frank':['python','golang'], 'tom':['c','PHP','python'], } for name,languages in favorite_languages.items(): #这里我们使用了languages来存列表的值 print("\n" + name.title() + "'s favorite languages are:") for language in languages: #使用for循环遍历语言列表 print("\t" + language.title()) #运行结果 Jen's favorite languages are: Python C++ Java Frank's favorite languages are: Python Golang Tom's favorite languages are: C Php Python
在字典里面存储字典
#信息字典 user = { 'aeinstein':{ 'first':'albert', 'last':'einstein', 'location':'princeton', }, 'mcurie':{ 'first':'marie', 'last':'curie', 'location':'paris', }, } for username,user_info in user.items(): print("\nUsername:",username) fullname = user_info['first'] + ' ' +user_info['last'] location = user_info['location'] print("\tFull name:" + fullname.title()) print("\tLocation:" + location.title()) #运行结果 Username: aeinstein Full name:Albert Einstein Location:Princeton Username: mcurie Full name:Marie Curie Location:Paris