6.2 使用字典
6.2.1 访问字典中的值
要获取与键相关联的值,可依次指定字典名和放在方括号内的键,如下所示:
dict = {'颜色':'红色'} print(dict['颜色']) >>> 红色
6.2.2 添加键—值对
dict = {'颜色':'红色'} dict['数字'] = 5 dict['目标'] = 10 print(dict) >>> {'颜色': '红色', '数字': 5, '目标': 10}
6.2.3 先创建一个空字典
dict = {}
6.2.4 修改字典中的值
要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。
dict = {'颜色': '红色', '数字': 5, '目标': 10} dict['颜色'] = '绿色' print(dict) >>> dict = {'颜色': '绿色', '数字': 5, '目标': 10}
6.2.5 删除键—值对
对于字典中不再需要的信息,可使用del语句将相应的键—值对彻底删除。使用del语句时, 必须指定字典名和要删除的键。
dict = {'颜色': '绿色', '数字': 5, '目标': 10} del dict['目标'] print(dict) >>> dict = {'颜色': '绿色', '数字': 5}
注意 删除的键—值对永远消失了。
6.2.6 由类似对象组成的字典
在前面的示例中,字典存储的是一个对象(游戏中的一个外星人)的多种信息,但你也可以 使用字典来存储众多对象的同一种信息。
favorite_languages = { '张三': 'python', '李四': 'c', '王五': 'ruby', '赵六': 'python', }
注意 对于较长的列表和字典,大多数编辑器都有以类似方式设置其格式的功能。对于较长的 字典,还有其他一些可行的格式设置方式,因此在你的编辑器或其他源代码中,你可能 会看到稍微不同的格式设置方式。
6.3 遍历字典
6.3.1 遍历所有的键—值对
favorite_languages = { '张三': 'python', '李四': 'c', '王五': 'ruby', '赵六': 'python', } for key,value in favorite_languages.items(): print('\nKey:' + key) print('Value:'+ value) >>> Key:张三 Value:python Key:李四 Value:c Key:王五 Value:ruby Key:赵六
要编写用于遍历字典的for循环,可声明两个变量,用于存储键—值对中的键和值。 对于这两个变量,可使用任何名称。
6.3.2 遍历字典中的所有键
在不需要使用字典中的值时,方法keys()很有用。
for name in favorite_languages.keys(): print(name) >>> 张三 李四 王五 赵六
6.3.3 按顺序遍历字典中的所有键
调用了函数sorted()排序
favorite_languages = { 'zhangsan':'python', 'lisi':'c', 'wangwu':'ruby', 'zhaoliu':'python', } for name in sorted(favorite_languages.keys()): print(name + 'thank you for taking the poll!') >>> lisithank you for taking the poll! wangwuthank you for taking the poll! zhangsanthank you for taking the poll! zhaoliuthank you for taking the poll!
6.3.4 遍历字典中的所有值
favorite_languages = { 'zhangsan':'python', 'lisi':'c', 'wangwu':'jave', 'zhaoliu':'python', } for language in favorite_languages.values(): print(language.title()) >>> Python C Jave Python
这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,这也许不是问题, 但如果被调查者很多,最终的列表可能包含大量的重复项。为剔除重复项,可使用集合(set)。 集合类似于列表,但每个元素都必须是独一无二的:
for language in set(favorite_languages.values()): print(language.title()) >>> Jave Python C
6.4 嵌套
有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。
6.4.1 字典列表
dict_1 = {'张三':'18'} dict_2 = {'李四':'19'} dict_3 = {'王五':'17'} dicts = [dict_1,dict_2,dict_3] for dict in dicts: print(dict) >>> {'张三': '18'} {'李四': '19'} {'王五': '17'}
6.4.2 在字典中存储列表
favorite_languages = { 'zhangsan':['python','jave'], 'lisi':['c','jave'], 'wangwu':['jave','c++'], 'zhaoliu':['python'] } for name,languages in favorite_languages.items(): print('\n'+name.title()+"'s favotite languages are:") for language in languages: print('\t' + language.title()) >>> Zhangsan's favotite languages are: Python Jave Lisi's favotite languages are: C Jave Wangwu's favotite languages are: Jave C++ Zhaoliu's favotite languages are: Python
6.4.3 在字典中存储 字典
users = { 'aeinstein': { 'first': 'albert', 'last': 'einstein', 'location': 'princeton', }, 'mcurie': { 'first': 'marie', 'last': 'curie', 'location': 'paris', }, } for username, user_info in users.items(): print("\nUsername: " + username) full_name = user_info['first'] + " " + user_info['last'] location = user_info['location'] print("\tFull name: " + full_name.title()) print("\tLocation: " + location.title()) >>> Username: aeinstein Full name: Albert Einstein Location: Princeton Username: mcurie Full name: Marie Curie Location: Paris