6.1 一个简单的字典

alien_0 = {'color': 'green', 'points': 5}
print(alien_0['color'])
print(alien_0['points'])

6.2 使用字典  

  字典 是一系列键—值对 。每个键 都与一个值相关联,你可以使用键来访问与之相关联的值。

  与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。

  在Python中,字典用放在花括号 {}  中的一系列键—值对表示

  键和值之间用冒号分隔,而键—值对之间用逗号分隔。

  6.2.1 访问字典中的值

  要获取与键相关联的值,可依次指定字典名和放在方括号内的键 dic['key']
  6.2.2 添加键—值对

  字典是一种动态结构,可随时在其中添加键—值对。要添加键—值对,可依次指定字典名、用方括号括起的键和相关联的值。

alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
alien_0['size']=10
print(alien_0)
{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'size': 10}

  6.2.3 先创建一个空字典

  使用一对空的花括号定义一个字典,再分行添加各个键—值对。例如,下例演示了如何以这种方式创建字典alien_0

alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
{'color': 'green', 'points': 5}

  6.2.4 修改字典中的值

  要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。例 alien_0['color'] = 'yellow'

  6.2.5 删除键—值对

  使用del 语句将相应的键—值对彻底删除。使用del 语句时,必须指定字典名和要删除的键。

  6.2.6 由类似对象组成的字典

  字典存储的是一个对象(游戏中的一个外星人)的多种信息,但你也可以使用字典来存储众多对象的同一种信息。例如,假设你要调查很多人,

  询问他们最喜欢的编程语言,可使用一个字典来存储这种简单调查的结果,如下所示:

favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}

6.3 遍历字典

  6.3.1 遍历所有的键—值对

  for k, v in user_0.items()

  for 语句的第二部分包含字典名和方法items() ,它返回一个键—值对列表。接下来,for 循环依次将每个键—值对存储到指定的两个变量中。
  6.3.2 遍历字典中的所有键

  在不需要使用字典中的值时,方法keys() 很有用。
  6.3.3 按顺序遍历字典中的所有键

  可使用函数sorted() 来获得按特定顺序排列的键列表的副本
  6.3.4 遍历字典中的所有值

  如果你感兴趣的主要是字典包含的值,可使用方法values()

  为剔除重复项,可使用集(set)集合 类似于列表,但每个元素都必须是独一无二的:

favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
} for k,v in favorite_languages.items():
print("Key:"+k)
print("Value:"+v)
print(favorite_languages.keys())
print(favorite_languages.values())
print(sorted(favorite_languages.keys()))
print(set(favorite_languages.values()))
Key:jen
Value:python
Key:sarah
Value:c
Key:edward
Value:ruby
Key:phil
Value:python
dict_keys(['jen', 'sarah', 'edward', 'phil'])
dict_values(['python', 'c', 'ruby', 'python'])
['edward', 'jen', 'phil', 'sarah']
{'python', 'ruby', 'c'}

6.4 嵌套

  6.4.1 字典列表

# 创建一个用于存储外星人的空列表
aliens = []
# 创建30个绿色的外星人
for alien_number in range(30):
new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
aliens.append(new_alien)
# 显示前五个外星人
for alien in aliens[:5]:
print(alien)
print("...")
# 显示创建了多少个外星人
print("Total number of aliens: " + str(len(aliens)))
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
...
Total number of aliens: 30

  6.4.2 在字典中存储列表

  需要将列表存储在字典中,而不是将字典存储在列表中

favorite_languages = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell'],
}
for name, languages in favorite_languages.items():
print("\n" + name.title() + "'s favorite languages are:")
if len(languages) > 1:
for language in languages:
print("\t" + language.title())
else:
print("\t" + languages[0].title())
Jen's favorite languages are:
Python
Ruby Sarah's favorite languages are:
C Edward's favorite languages are:
Ruby
Go Phil's favorite languages are:
Python
Haskell

  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())
Username: aeinstein
Full name: Albert Einstein Username: mcurie
Full name: Marie Curie

读书笔记「Python编程:从入门到实践」_6.字典的更多相关文章

  1. 读书笔记「Python编程:从入门到实践」_8.函数

    8.1 定义函数 def greet_user(): # def 来告诉Python你要定义一个函数.这是函数定义 """Hello World""& ...

  2. 读书笔记「Python编程:从入门到实践」_9.类

    9.1 创建和使用类 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想. OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 把 ...

  3. 读书笔记「Python编程:从入门到实践」_11.测试函数

    11.1 测试函数 要学习测试,得有要测试的代码.下面是一个简单的函数,它接受名和姓并返回整洁的姓名: def get_formatted_name(first, last): "" ...

  4. 读书笔记「Python编程:从入门到实践」_10.文件和异常

    10.1 从文件中读取数据  10.1.1 读取整个文件 with open(~) as object: contents=object.read() with open('C:/Users/jou/ ...

  5. 读书笔记「Python编程:从入门到实践」_7.用户输入和while循环

    7.1 函数input()的工作原理 函数input() 让程序暂停运行,等待用户输入一些文本.获取用户输入后,Python将其存储在一个变量中,以方便你使用. message = input(&qu ...

  6. 读书笔记「Python编程:从入门到实践」_5.if语句

    5.1 一个简单示例 cars = ['audi', 'bmw', 'subaru', 'toyota'] for car in cars: if car == 'bmw': print(car.up ...

  7. 读书笔记「Python编程:从入门到实践」_4.操作列表

    4.1 遍历整个列表   4.1.1 深入地研究循环   4.1.2 在for循环中执行更多的操作   4.1.3 在for循环结束后执行一些操作  例 magicians = ['alice', ' ...

  8. 读书笔记「Python编程:从入门到实践」_3.列表简介

    3.1 列表是什么 列表 由一系列按特定顺序排列的元素组成. 在Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素. 3.1.1 访问列表元素 指出列表的名称,再指出元素的索引   ...

  9. 读书笔记「Python编程:从入门到实践」_2.变量和简单数据类型

    做了大半年RPA了,用的工具是Kapow. 工作没有那么忙,不想就这么荒废着,想学点什么.就Python吧. 为期三个月,希望能坚持下来. 2.1 变量的命名和使用 变量名只能包含字母.数字和下划线. ...

随机推荐

  1. HTML的基本操作学习----常用标签,特殊符号,列表,表格,表单

    什么是HTML 常用标签 标题标签 段落标签 粗体标签+斜体 超链接标签 图片标签 列表标签 无序标签 有序标签 自定义列表 div标签 特殊符号 表格 表单 HTML 什么是 HTML?   HTM ...

  2. 【[Offer收割]编程练习赛 14 A】小Hi和小Ho的礼物

    [题目链接]:http://hihocoder.com/problemset/problem/1505 [题意] [题解] 考虑Meet in the middle. 因为两个数的和不是很大; 直接用 ...

  3. 【codeforces 514A】Chewbaсca and Number

    [题目链接]:http://codeforces.com/contest/514/problem/A [题意] 允许你把每个数字翻转 ->x变成9-x 然后问你能够变成的最小的数字是什么; 不能 ...

  4. ansible common modules

    ##Some common modules[cloud modules] [clustering modules] [command modules]command - executes a comm ...

  5. 创建RpcEnv

    感觉这篇文章不错 2.1.2.创建RpcEnv -  RpcEndpoint -  RpcEndpointRef val systemName = if (isDriver) driverSystem ...

  6. [Usaco2010 Mar]gather 奶牛大集会

    [Usaco2010 Mar]gather 奶牛大集会 题目 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 ...

  7. [luoguP1197] [JSOI2008]星球大战(并查集)

    传送门 思维!重要的是思维! 题目让删边,然而并查集不好删边(并!查!集!啊) 我们离线处理,从后往前添边,这样并查集就可以用了. 用并查集维护连通块个数即可. ——代码 #include <c ...

  8. noip模拟赛 可耻

    题目描述 给定一个长度为偶数的排列 p,你每次可以选取 p 排列中相邻的两个元素,假如分别是 x 和 y,那 么把 x 和 y 加入一个序列 q 的末尾,并将 x 和 y 从排列 p 中删除.重复上述 ...

  9. ssl_error_weak_server_ephemeral_dh_key

    1. http://blog.csdn.net/mmoooodd/article/details/50264559 2. http://blog.csdn.net/zhu19774279/articl ...

  10. HDU 5016 Mart Master II (树上点分治)

    题目地址:pid=5016">HDU 5016 先两遍DFS预处理出每一个点距近期的基站的距离与基站的编号. 然后找重心.求出每一个点距重心的距离.然后依据dis[x]+dis[y] ...