Python入门(七)无序的字典和集合不容小觑

简介: 留作查阅!Python3中字典和集合的基本应用,和前面的序列,也有很多相似之处,特别是内置函数和内置方法,还是有必要了解区分的。

1.字典

访问字典里的参数

>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> dict1['music']
KeyError: 'music'

这里报错是因为,字典中并没有key值为 'music',为了避免 KeyError 发生,有两个办法:

  • 先用 in 操作符判断一下 key 是否存在:
>>> 'music' in dict1
False
  • 用 get() 方法,在Key不存在的时候,返回None:
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> print (dict1.get('music'))
None

修改字典

>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> dict1['singer']='kesha'
>>> dict1['song']='Rainbow'
>>> dict1
{'singer': 'kesha', 'sex': 'female', 'song': 'Rainbow'}

删除字典元素

>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> del dict1['sex']  #删除键是'sex'的条目
>>> dict1
{'singer': 'GEM', 'song': '查克靠近'}
>>> dict1.clear()  # 清空词典中所有条目
>>> dict1
{}
>>> del dict1  # 删除词典
>>> dict1
NameError: name 'dict1' is not defined

字典的BIF

dict1

比较字典大小:operator()

>>> import operator   #首先要导入运算符模块
>>> operator.gt(dict1,dict2)  #意思是greater than(大于)
False
>>> operator.ge(dict1,dict2)   #意思是greater and equal(大于等于)
True
>>> operator.eq(dict1,dict2)  #意思是equal(等于)
True
>>> operator.le(dict1,dict2)  #意思是less and equal(小于等于)
True
>>> operator.lt(dict1,dict2)  #意思是less than(小于)
False

字典的内置方法

  • 浅拷贝字典,注和直接赋值不同:copy()
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> dict2=dict1
>>> dict3=dict1.copy()
>>> dict1['singer']='kesha'
>>> dict1['song']='Rainbow'
>>> dict1  #dict1改变
{'singer': 'kesha', 'sex': 'female', 'song': 'Rainbow'}
>>> dict2  #直接赋值得到的dict2跟着改变
{'singer': 'kesha', 'sex': 'female', 'song': 'Rainbow'}
>>> dict3  #浅拷贝得到的dict3保持不变
{'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
  • 创建一个新字典,以序列seq中元素做字典的键,字典所有键对应的初始值为value:fromkeys(seq[, value])
>>> seq = ('singer', 'sex', 'song')
>>> dict1 = dict.fromkeys(seq)
>>> dict1
{'singer': None, 'sex': None, 'song': None}
>>> dict2 = dict.fromkeys(seq,2)
>>> dict2
{'singer': 2, 'sex': 2, 'song': 2}

-以列表返回可遍历的(键, 值) 元组数组:items()

>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> dict1.items()
dict_items([('singer', 'GEM'), ('sex', 'female'), ('song', '查克靠近')])
  • 把字典dict2的键值对更新到dict里:update(dict2)
>>> dict1= {'singer': 'GEM', 'sex': 'female'}
>>> dict2= {'song': '查克靠近'}
>>> dict1.update(dict2)
>>> dict1
{'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
  • 以列表返回字典中的所有值:values()
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> list(dict1.values())
['GEM', 'female', '查克靠近']
  • 删除字典给定键 key 所对应的值,返回值为被删除的值:pop(key[,default])
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> pop1=dict1.pop('singer')
>>> pop1
'GEM'
  • 随机返回并删除字典中的一对键和值(一般删除末尾对):popitem()
>>> dict1= {'singer': 'GEM', 'sex': 'female', 'song': '查克靠近'}
>>> pop1=dict1.popitem()
>>> pop1
('song', '查克靠近')
>>> dict1
{'singer': 'GEM', 'sex': 'female'}

任何情况下都可以使用此种方法吗?

>>> dict2={}
>>> pop2=dict2.popitem()
KeyError: 'popitem(): dictionary is empty'

上例说明,如果字典已经为空,调用此方法,就发生Error。


2.集合

set的内部结构和dict很像,唯一区别是不存储value,也就是说当用花括号括起来一堆没有映射关系的元素时就创建了一个集合。

访问集合里的参数

和字典一样,我们可以先判断要访问的参数是否在集合内:

>>> set1= {'酷狗音乐', '网易云音乐', '虾米音乐'}
>>> 'QQ音乐' in set1
False

更新集合

  • 用add()添加元素,注意如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了。
>>> set1= {'酷狗音乐', '网易云音乐', '虾米音乐'}
>>> set1.add('QQ音乐')
>>> set1
{'QQ音乐', '酷狗音乐', '网易云音乐', '虾米音乐'}
  • 用remove()删除元素,注意如果删除的元素不存在set中,会出现Error:
>>> set1= {'酷狗音乐', '网易云音乐', '虾米音乐'}
>>> set1.remove('QQ音乐')
KeyError: 'QQ音乐'

集合的内置方法

以下方法应用都比较简单,而且很多前面都已经提到过,所以就不在一一举例。
set

END!

目录
相关文章
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
45 2
|
1月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
45 2
|
1月前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
41 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
2月前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
50 7
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
113 3
|
9月前
|
人工智能 Java Python
python入门(二)安装第三方包
python入门(二)安装第三方包
115 1
|
4月前
|
机器学习/深度学习 Python
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
本篇将详细介绍如何在Mac系统上安装和配置Anaconda,如何创建虚拟环境,并学习如何使用 `pip` 和 `conda` 管理Python包,直到成功运行第一个Python程序。通过本篇,您将学会如何高效地使用Anaconda创建和管理虚拟环境,并使用Python开发。
155 4
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
|
4月前
|
IDE 开发工具 iOS开发
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
本篇将详细介绍如何在Mac系统上安装Python,并配置Python开发环境。内容涵盖Python的安装、pip包管理工具的配置与国内镜像源替换、安装与配置PyCharm开发工具,以及通过PyCharm编写并运行第一个Python程序。通过本篇的学习,用户将完成Python开发环境的搭建,为后续的Python编程工作打下基础。
414 2
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
|
4月前
|
iOS开发 MacOS Python
【10月更文挑战第1天】「Mac上学Python 1」入门篇1 - 安装Typora与Markdown编辑技巧
本篇将详细介绍如何在Mac系统上安装Typora这款简洁高效的Markdown编辑器,并学习Markdown常用语法。通过本篇,用户能够准备好记录学习笔记的工具,并掌握基本的文档编辑与排版技巧,为后续学习提供便利。
228 1
【10月更文挑战第1天】「Mac上学Python 1」入门篇1 - 安装Typora与Markdown编辑技巧

热门文章

最新文章