当前位置: 首页 > news >正文

python字典程序题_笨办法学Python 习题 39: 字典, 可爱的字典

接下来我要教你另外一种让你伤脑筋的容器型数据结构,因为一旦你学会这种容器,你将拥有超酷的能力。这是最有用的容器:字典 (dictionary) 。

Python 将这种数据类型叫做 “ dict” ,有的语言里它的名称是 “ hash” 。这两种名字我都会用到,不过这并不重要,重要的是它们和列表的区别。你看,针对列表你可以做这样的事情:

>>> things = ['a', 'b', 'c', 'd']

>>> print things[1]

b

>>> things[1] = 'z'

>>> print things[1]

z

>>> print things

['a', 'z', 'd']

>>>

你可以使用数字作为列表的索引,也就是你可以通过数字找到列表中的元素。而 dict 所作的,是让你可以通过任何东西找到元素,不只是数字。是的,字典可以将一个物件和另外一个东西关联,不管它们的类型是什么,我们来看看:

>>> stuff = {'name': 'Zed', 'age': 36, 'height': 6*12+2}

>>> print stuff['name']

Zed

>>> print stuff['age']

36

>>> print stuff['height']

74

>>> stuff['city'] = "San Francisco"

>>> print stuff['city']

San Francisco

>>>

你将看到除了通过数字以外,我们还可以用字符串来从字典中获取 stuff ,我们还可以用字符串来往字典中添加元素。当然它支持的不只有字符串,我们还可以做这样的事情:

>>> stuff[1] = "Wow"

>>> stuff[2] = "Neato"

>>> print stuff[1]

Wow

>>> print stuff[2]

Neato

>>> print stuff

{'city': 'San Francisco', 2: 'Neato','name': 'Zed', 1: 'Wow','height': 74}

>>>

在这里我使用了两个数字。其实我可以使用任何东西,不过这么说并不准确,不过你先这么理解就行了。当然了,一个只能放东西进去的字典是没啥意思的,所以我们还要有删除物件的方法,也就是使用 del这个关键字:

>>> del stuff['city']

>>> del stuff[1]

>>> del stuff[2]

>>> stuff

{'name': 'Zed', 'height': 74}

>>>

接下来我们要做一个练习,你必须非常仔细,我要求你将这个练习写下来,然后试着弄懂它做了些什么。这个练习很有趣,做完以后你可能会有豁然开朗的感觉。

# -*- coding:utf-8 -*-

class Song(object): #创建类

def __init__(self,lyrics):  #创建方法

self.lyrics = lyrics

def sing_me_a_song(self):   #创建方法

for line in self.lyrics:

print line

#添加htppy_baby属性

happy_baby = Song(["Happy birthday to you",                   "I dont't want to get sued",                   "So I'll stop right there"])

#添加bulls_on_parde属性

bulls_on_parde = Song(["They rally around the family",                      "With pockets full of shells"])

happy_baby.sing_me_a_song()

bulls_on_parde.sing_me_a_song()

结果

结果

Happy birthday to you

I dont't want to get sued

So I'll stop right there

They rally around the family

With pockets full of shells

加分习题

1. 在 Python 文档中找到 dictionary ( 又被称作 dicts,dict) 的相关的内容,学着对 dict 做更多的操作。

2. 找出一些 dict 无法做到的事情。例如比较重要的一个就是 dict 的内容是无序的,你可以检查一下看看是否真是这样。

3. 试着把 for-loop 执行到 dict 上面,然后试着在 for-loop 中使用 dict 的 items() 函数,看看会有什么样的结果。

常见问题回答

列表和字典有何不同?

列表是有序排列的一些物件,而字典是将一些物件( keys )对应到另外一些物件( values )的数据结构。

字典能用在哪里?

各种你需要通过某个值去查看另一个值的场合。其实你可以把字典当做一个“查询表”。

列表能用在哪里?

列表是专供有序排列的数据使用的。你只要知道索引就能查到对应的值了。

有没有办法弄一个可以排序的字典?

看看 Python 里的 collections.OrderedDict 数据结构。上网搜索一下文档和用法。

相关文章:

  • python 数学公式_线性回归算法用到的数学公式及python实现
  • delphi中的函数传参如何传枚举参数_函数调用背后的秘密——传参与返回值
  • python字符串处理函数汇总_超详细!盘点Python中字符串的常用操作
  • java接口应用在哪些方面_掏空了各大搜索引擎,整理了154道Java面试题!
  • flutter框架优缺点_2020年,一文点破跨平台开发框架现状
  • collect的功能是什么?其底层如何实现的?_用Python实现定时自动化收取蚂蚁森林能量,再也不怕被偷了...
  • docker python_「docker实战篇」python的docker-docker镜像的创建使用命令(32)
  • 在android studio中如何创建一个类来继承另外一个类_Python编程从入门到实践-连载8(类)...
  • python气象绘图速成_Python气象数据处理与绘图(11):矢量箭头图(风场,通量场)
  • ubuntu 自动挂载共享文件夹 /etc/fstab_使用 Cobbler 批量自动化部署 Windows 10 和 Windows Server 2019...
  • idea redis 插件_最全 !10个Redis可视化工具横向评测
  • sqlserver可视化工具_每个数据科学家都应该知道的18个基础工具
  • python coding_Python的编码注释# -*- coding:utf-8 -*-
  • python生成指定长度的列表_如何用Python创建固定长度的列表
  • 内存管理新技术_技术转管理,新项目经理都来看看
  • Android 控件背景颜色处理
  • CAP理论的例子讲解
  • Elasticsearch 参考指南(升级前重新索引)
  • java中具有继承关系的类及其对象初始化顺序
  • Linux快速复制或删除大量小文件
  • MySQL几个简单SQL的优化
  • Object.assign方法不能实现深复制
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • spark本地环境的搭建到运行第一个spark程序
  • 动态魔术使用DBMS_SQL
  • 对象管理器(defineProperty)学习笔记
  • 仿天猫超市收藏抛物线动画工具库
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何解决微信端直接跳WAP端
  • 深入浅出Node.js
  • 使用docker-compose进行多节点部署
  • 思否第一天
  • 我的业余项目总结
  • 写给高年级小学生看的《Bash 指南》
  • const的用法,特别是用在函数前面与后面的区别
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​Spring Boot 分片上传文件
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #每天一道面试题# 什么是MySQL的回表查询
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (C语言)逆序输出字符串
  • (java)关于Thread的挂起和恢复
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (规划)24届春招和25届暑假实习路线准备规划
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)Mysql的优化设置
  • .jks文件(JAVA KeyStore)
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net 生成二级域名
  • .NET面试题(二)
  • .Net转前端开发-启航篇,如何定制博客园主题