Python-练习 39. 字典,可爱的字典

  • ex39.py
    • 代码
    • 运行结果
  • 问题
  • 字典能做什么

现在你要学习 Python 中的另一种数据结构——字典(Dictionary)。字典(也叫 dict)是一种和列表类似的数据存储方式。但是不同于列表只能用数字获取数据,字典可以用任何东西来获取。你可以把字典当成是一个存储和组织数据的数据库。
让我们比较一下列表和字典的作用。你看,列表可以让你做这些事情:

你可以用数字来索引列表,找到列表里面有些什么。到现在你应该能够理解这一点。但是你还要确保自己明白,你只能用数字来取出列表中的元素。

相比之下,字典能让你用几乎所有的东西,而不只是数字。是的,字典能够把一个东西和另一个东西关联起来,不管它们是什么类型。我们来看看:

你会看到我们用了字符串(而不是数字)来从 stuff 字典中取出了我们想要的东西。我们也可以用字符串来给字典添加新的东西。而且,也可以不用字符串,我们可以这样做:

在这一段代码中我用了数字,所以你看,我在打印字典的时候既可以用数字也可以用字符串来作为键。
我可以用任何东西。好吧,大多数东西,不过你现在就假装能够用任何东西吧。
当然,如果一个字典只能放东西那就太蠢了。下面是如何用 ‘del’ 关键词来删除其中的东西:

接下来我们要做一个练习,你必须非常仔细,我要求你将这个练习写下来,然后试着弄懂它做了些什么。当你把东西放进字典、随意取出、以及做其他操作的时候记得做一下笔记。

注意一下这个例子是如何把州名和它们的缩写以及州的缩写和城市映射(mapping)起来的,记住,“映射”或者说“关联”(associate)是字典的核心理念。

ex39.py

代码

#create a mapping of state to abbreviation  州名称缩写
states = {'Oregon': 'OR','Florida': 'FL','California': 'CA','New York': 'NY','Michigan': 'MI'
}#create a basic set of states and some cities in them  州包含的一些城市
cities = {'CA': 'San Francisco','MI': 'Detroit','FL': 'Jacksonville'
}#add some more cities 添加城市
cities['NY'] = 'New York'
cities['OR'] = 'Portland'# print out some cities 打印州的城市
print('-' * 10)
print("NY State has: ", cities['NY'])
print("OR State has: ", cities['OR'])# print some states 打印一些州的缩写
print('-' * 10)
print("Michigan's abbreviation is: ", states['Michigan'])
print("Florida's abbreviation is: ", states['Florida'])#do it by using the state then cities dict 调用城市和州字典
print('-' * 10)
print("Michigan has: ", cities[states['Michigan']])
print("Florida has: ", cities[states['Florida']])#print every state abbreviation 打印每一个州的缩写
print('-' * 10)
for state, abbrev in list(states.items()):#items() 函数以列表返回可遍历的(键, 值) 元组数组。print(f"{state} is abbreviation {abbrev}")#print every city in state 打印每个州的城市
print('-' * 10)
for abbrev, city in list(cities.items()):print(f"{abbrev} has the city {city}")#now do both at the same time 同时打印州和城市
print('-' * 10)
for state,abbrev in list(states.items()):print(f"{state} state is abbreviated {abbrev}")print(f"and has city {cities[abbrev]}")print('-' * 10)
#safely get a abbreviation by state that might not be there 试着找一个不在字典里的州名称
state = states.get('Texas')#get() 函数返回指定键的值,如果值不在字典中返回默认值。if not state:print("Sorry, no Texas.")#get a city with a default value 给一个城市加上默认值
city = cities.get('TX', 'Does Not Exist')
print(f"The city for the state 'TX' is: {city}")print('-' * 30)
#加入中国的省份及缩写
provinces = {'北京市': '京','四川省': '川','湖北省': '鄂','辽宁省': '辽','山东省': '鲁'
}#加入主要城市
c_cities = {'京': '朝阳区','鄂': '武汉市','辽': '沈阳市','鲁': '青岛市','川': '成都市'
}#遍历省份
print('-' * 10)
for province, c_abbrev in list(provinces.items()):print(f"{province} 的简称是 {c_abbrev}")#遍历城市
print('-' * 10)
for c_abbrev, c_city in list(c_cities.items()):print(f"{c_abbrev} 有 {c_city}")#同时遍历城市及省份
print('-' * 10)
for province, c_abbrev in list(provinces.items()):print(f"{province} 的简称是 {c_abbrev}")print(f"它有 {c_cities[c_abbrev]}")print('-' * 10)
province = provinces.get('吉')
if not state:print("对不起,没有吉林省.")#get a city with a default value 给一个城市加上默认值
c_city = c_cities.get('吉', '不存在')
print(f"'吉'包含的城市是: {c_city}")'''-----------------------------------------------------------------------------''''''
1. 给你所在的国家或其他国家建立城市和州/地区的类似映射。2. 找找 Python 的字典文档,试试多进行一些操作。3. 看看你不能用字典做什么。很重要的一点是它们没有次序,试着玩玩看。'''

运行结果


问题

列表和字典有哪些区别?
列表是元素的有序排列。而字典是把一些元素(称为“键”,keys)和另一些元素(称为“值”,values)匹配起来。

我能用字典做什么?
当你需要用一个东西去查另一个东西的时候。其实,你可以把字典称为“查询表”(look up tables)。

我能用列表做什么?
可以用于任何有序排列的东西,同时你只需要用数字索引来查找它们。如果我需要一个字典,但我又想让它们有序排列怎么办呢? 去看看 Python 中的collections.OrderedDict 数据结构。可以在网上找找相关文档。

如果我需要一个字典,但我又想让它们有序排列怎么办呢?
去看看 Python 中的collections.OrderedDict 数据结构。可以在网上找找相关文档。

字典能做什么

字典是另一种数据结构的例子,在编程中和列表一样常用。字典是用来把你想要存储的东西映射或关联到一些键(keys),以便你能够获取到它们。同样的,程序员们不会用“字典”这个词来指代跟现实生活中的字典没有关系的东西。所以,让我们来看一个现实世界的例子。

假设你想查查“Honorificabilitudinitatibus”这个词的意思。现在你只需要把这个词复制粘贴到一个搜索引擎就能得到答案。可以说搜索引擎就像一个超级复杂版本的牛津英语字典。在没有搜索引擎之前,你可能会这么做:

  1. 去图书馆找到一本字典,让我们假设你要找牛津字典。
  2. 你知道“honorificabilitudinitatibus”以字母 H 开头,所以你在书的侧边找那个小小的 H 。
  3. 然后你在 H 部分翻页寻找直到接近以“hon”开头的单词。
  4. 继续翻了几页之后你终于找到了“honorificabilitudinitatibus”,或者你已经翻到以“hp”开头的单词了,你才意识到牛津字典里根本没有这个词。
  5. 一旦你找到了这个词,你会看看它的定义,以弄明白它的意思。

这个过程基本上就是字典的工作原理,你把“honorificabilitudinitatibus”这个词映射到它的定义上。而
Python 中的字典和现实世界中的牛津字典非常类似。

Python-练习 39. 字典,可爱的字典相关推荐

  1. 【“笨办法”学Python】39.字典,可爱的字典

    39.字典,可爱的字典 文章目录 前言 一.字典和列表的基本操作 二.字典的例子 三.字典的作用 总结 前言   字典也是一种数据结构,和列表一样,它是编程中最常用的数据结构之一. 一.字典和列表的基 ...

  2. python的6种基本数据类型--字典

    python的6种基本数据类型--字典 字典 字典的定义与特性 字典是Python语言中唯一的映射类型. 定义:{key1:value1,key2:value2} 1.键与值用冒号":&qu ...

  3. Python day04——列表、元组、字典

    一.列表(List) 列表的定义: (1)列表(List)是Python中使用最频繁的数据类型,在其它语言中通常叫"数组". (2)列表用于存储一串信息. (3)列表用" ...

  4. Python 炫技操作:合并字典的七种方法

    来源 | Python编程时光(ID: Cool-Python) Python 语言里有许多(而且是越来越多)的高级特性,是 Python 发烧友们非常喜欢的.在这些人的眼里,能够写出那些一般开发者看 ...

  5. python 字典代码_Python 字典(Dictionary)

    Python 字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包 ...

  6. python定义一个字典并遍历字典中的键和值_python字典操作总结

    创建 方法一: 方法二:从Python 2.2 版本起,可以使用一个工厂方法,传入一个元素是列表的元组作为参数 方法三: 从Python 2.3 版本起, 可以用一个很方便的内建方法fromkeys( ...

  7. Python将新项添加到字典[重复]

    本文翻译自:Python add new item to dictionary [duplicate] This question already has an answer here: 这个问题在这 ...

  8. Python编程语言学习:列表与字典互转的几大方法集锦、从列表中按顺序循环抽走一个元素输出剩余元素之详细攻略

    Python编程语言学习:列表与字典互转的几大方法集锦.从列表中按顺序循环抽走一个元素输出剩余元素之详细攻略 目录 列表与字典互转的几大方法集锦 T1.基于两个列表利用zip函数来构造字典 <

  9. python 列表,元祖,字典的区别

    列表符号是[] 中括号 元组是() 圆括号 字典是{} 大括号 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目.列表中的项目.列表中的项目应该包括在方括号中,这样p ...

最新文章

  1. Unity中GameObject API解析
  2. 《架构探险——从零开始写Java Web框架》这书不错,能看懂的入门书
  3. OS X Mountain Lion上的多个Java版本
  4. ubuntu 软件包降级
  5. GY编辑平台产品总结
  6. 特斯拉将美国政府告了:要求停止对华关税并退款!
  7. mysql 删除hash分区_MySQL-如何删除hash表分区
  8. 6 岁就成“大厂团宠”,这门编程语言竟引 Linux、谷歌、亚马逊共“折腰” !
  9. spark reduce与reduceByKey的区别
  10. 程序员同事被包工头坑了,这社会很魔幻
  11. 四川省大学生计算机作品大赛,我院承办2019“新华三杯”四川省大学生计算机作品大赛并获佳绩...
  12. 土建中级工程师考试用书电子版_对没错!2020年湖南土建中级职称考试教材只是指导用书...
  13. 农历24节气日期计算公式
  14. vue项目PC端移动端适配方案
  15. 站内搜索功能的几种实现方式
  16. 【树莓派】挂载移动硬盘 使用transmission 刷pt站
  17. 智鼎在线测评是测什么_为什么求职者会反感企业招聘用的人才测评?
  18. 关于ArcMap中道路、河道中心线提取过程
  19. LEACH Algorithm
  20. 【面经专栏】独家整理【C++】面经

热门文章

  1. Blockchain Programming in iOS Using Swift 使用Swift在iOS中进行区块链编程 Lynda课程中文字幕
  2. mos管GS之间的电阻的作用?
  3. java反射效率问题_Java反射到底慢在哪?
  4. HTML的基本结构和语法组成
  5. 一个月砸13万,粉丝为什么愿意为虚拟偶像花钱?
  6. 微信小程序图片设置为圆
  7. 为什么黄牛票那么容易拿到?Python爬虫告诉你
  8. (转)MVS-OS390系统管理-大型服务器概述
  9. Deep Forest(gcforest)通俗易懂理解
  10. CocosCreator多语言包的处理