文章目录
前言
笔者刚开始学习Python。本文主要记录学习,如有错漏和不足之处,请大家指正❀。本篇主要内容为字典和集合的基础知识。
一、字典是什么?
我们前面说到序列结构有字符串、列表、元祖、字典、集合。其中,字典可以理解为“键值对”的无序可变序列。
a = {'name':'linshen','age':'20'}
如上所示,name和age是键,linshen和20是值。
- 键是任意不可变、不可重复的数据。它可以是整数、浮点数、字符串以及元祖,但不能是列表或字典。
- 值则是任意数据,并且可以重复。
二、字典的创建方法
创建字典往往有3种常见方法,如下:
- 通过{}、dict()来创建字典对象
- 通过zip()创建字典对象
- 通过fromkeys创建值为空的字典
>>> a = {"name":"linshenshenshenshijianlu"}
>>> a
{'name': 'linshenshenshenshijianlu'}
>>> type(a)
<class 'dict'>
>>> b= dict(name="linshen")
>>> b
{'name': 'linshen'}
>>> type(b)
<class 'dict'>
三、字典元素的访问
字典元素访问方法如下:
1.通过[ 键 ]获取“值”
>>> h = dict.fromkeys(['name','grade'])
>>> h
{'name': None, 'grade': None}
2.通过get()方法获得“值”
>>> print(a.get('a'))#若不存在则返回空值
None
3.其他方法
除了上面两种,还可以通过4种方法访问字典元素。
- 利用a.items()列出所有键值对
- 使用len()键值对的个数
- 利用a.keys()列出所有的键,利用a.values()列出所有的值
- 利用in操作符检测某个键是否在字典中(与前面in操作符的用法同理)
四、序列解包是什么?
先看一个例子,如下:
In [1]: a,b,c = [5,2,0]
In [2]: a
Out[2]: 5
In [3]: b
Out[3]: 2
In [4]: c
Out[4]: 0
序列解包适用于任意序列类型,可以将元素序列解包到另一组变量中。
在具体用法上,一方面,利用序列解包可以实现对多个变量的同时赋值;另一方面,序列解包还可以被用来遍历多个序列。
五、表格数据使用字典和列表储存
在我们的日常生活中,可以利用Python将杂乱的数据整理成表格。这一次,我们使用字典和列表储存表格数据。
r1 = {'rank':'1','name':'张三','salary':'50000'}
r2 = {'rank':'2','name':'李四','salary':'30000'}
r3 = {'rank':'3','name':'王五','salary':'10000'}
tb = [r1,r2,r3]
for i in range(len(tb)):
print(tb[i].get('salary'))
for i in range(len(tb)):
print(tb[i].get('rank'),tb[i].get('name'),tb[i].get('salary'))
在pycharm中我们运行上述代码,得到结果如下图所示:
六、集合的概念与相关操作
集合是一个无序的、不重复的元素序列,其底层实现是字典。集合只有字典的键对象,因此不能重复且唯一。
一般情况下,有2种方式创建集合:
- 利用{}创建集合
- 使用set()将可迭代对象转化成集合(但若存在重复数据,则只保留一个)
>>> a = {5,2,0}
>>> a
{0, 2, 5}
>>> type(a)
<class 'set'>
与此同时,集合还涉及到的相关操作有:
- 利用add增加指定元素
- 利用remove和clear删除元素
- 数学概念中的交集、并集、补集与差集
程序示例如下:
>>> a = {10,30,'烤肉'}
>>> b = {'牛舌','猪五花','烤肉'}
>>> a|b#并集
{'猪五花', '牛舌', 10, '烤肉', 30}
>>> a.union(b)#并集
{'猪五花', '牛舌', 10, '烤肉', 30}
>>> a&b#交集
{'烤肉'}
>>> a.intersection(b)#交集
{'烤肉'}
>>> a-b#差集
{10, 30}
>>> a.difference(b)#差集
{10, 30}