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. 使用MySQLMigrationToolkit快速将Oracle数据导入MySQL

    使用MySQL Migration Toolkit快速将Oracle数据导入MySQL 上来先说点废话 本人最近在学习一些数据库方面的知识,之前接触过Oracle和MySQL,最近又很流行MongoD ...

  2. spring mvc之applicationContext

    1.ApplicationContext是在package org.springframework.context下,是spring的,spring context包下的. applicationCo ...

  3. MVC.Net:压缩/保存图片缩略图

    通常用户上传的图片需要压缩或者生成缩略图.用System.Web.Helpers.WebImage的Resize方法可以很方便的实现这一功能.示例代码如下: /// <summary> / ...

  4. Retrofit网络框架入门使用

    1.简单介绍 retrofit事实上就是对okhttp做了进一步一层封装优化. 我们仅仅须要通过简单的配置就能使用retrofit来进行网络请求了. Retrofit能够直接返回Bean对象,比如假设 ...

  5. Mybatis+0+null,小问题引发的血案

    Mybatis在进行<if test="status != null and status != ''">判空操作时,假设status为0的时候,该推断条件的值为fal ...

  6. SQL LEN() 函数 ,case when,聚合函数的使用方法

    SELECT aa.[User_Id],cc.[User_Name],dd.Name AS DepName,aa.Module_Id,aa.Module_Name, SUM(CASE aa.Opera ...

  7. Java系列之JNDI

      简单介绍   JNDI(Java Naming and Directory Interface,Java命名和文件夹接口)是SUN公司提供的一种标准的Java命名系统接口.JNDI提供统一的cli ...

  8. CF # 296 C Glass Carving (并查集 或者 multiset)

    C. Glass Carving time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  9. Golang Template source code analysis(Parse)

    This blog was written at go 1.3.1 version. We know that we use template thought by followed way: fun ...

  10. JAVA8与lambda表达式

    一.lambda表达式的来源 Lambda 表达式(拉姆达表达式)来源于lambda演算是Alonzo Church给出的一套图灵机等价的形式计算系统.lambda演算系统以函数和变量为基础,也可以进 ...