首页 > 编程语言 > 详细

python数据结构:集合、字典

时间:2020-03-12 20:49:33      阅读:80      评论:0      收藏:0      [点我收藏+]

集合

  注意:

  • 集合是可变的,所有的操作都是改变其本身,也就是说 id(指针的存储路径)是不会改变的,只是改变了内容

  • 集合(set)是一个无序的不重复元素的数据结构。(所以没有下标索引)

  • 集合只有增加、删除、查询(不能用索引),没有修改的方法

  • 可以使用大括号 { } 或者 set() 函数创建集合,但是创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

 1、内置方法

# add 用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作
>>> set1 = {1, a, d, 2}
>>> set1.add(1)  # 没有返回值
>>> set1.add(1)
>>> set1
{1, 2, d, a, 1}

# update 用于向集合添加元素, 这个和add有区别
>>> set1.add("edf") # add是整体增加
>>> set1
{edf}
>>> set1.update("edf") # 拆开来增加
>>> set1
{d, f, edf, e}

# remove 删除元素
>>> set1
{d, 1, 2, 3, f, e, edf}
>>> set1.remove(1)
>>> set1
{d, 2, 3, f, e, edf}

# discard 方法用于移除指定的集合元素。该方法的参数也是只接收一个值
# 注意:该方法不同于remove()方法,因为remove()方法在移除一个不存在的元素时会发生错误,而discard()方法不会。
>>> set4 = {1,2,333,sd, zz}
>>> set4.discard(1)  # 没有返回值
>>> set4
{2, sd, 333, zz}
>>> set4.discard(5)  
>>> set4
{2, sd, 333, zz}

# pop 用于随机移除一个元素。
>>> fruits = {"apple", "banana", "cherry"}
>>> fruits.pop()  # 有返回值,返回被删除的那个值
banana

# clear 用于移除集合中的所有元素
>>> set2 = {a, b}
>>> set2.clear() # 没有返回值
>>> set2
set()

 2、符号运算

>>> set1 = {1,2,3}
>>> set2 = {2}
>>> set1 & set2  # 交集
{2}
>>> set1-set2 # 差集
{1, 3}
>>> set1|set2  # 并集
{1, 2, 3}
>>> set1 = {1,2,3,4,5,6}
>>> set2 = {1,3,5,7,9}
>>> set1^set2 # 代表一个存在另一个不存在的
{2, 4, 6, 7, 9}

 

字典

  备注:

  • 字典的键必须是唯一的,如果重复赋值,那么会以最后一个为准

  • key :必须是不可变类型,如:元祖,字符串,数字等,但是 []、{}这种可以变的就不行

  • 可变性:元素值支持增删改查

  • 无序性:没有索引,只有通过键来取值

  • 凡是要归类存储使用字典是最优选择

 内置方法

# 创建字典
>>>dict1 = {}
>>>type(dict1)
<class dict>

#[]通过键来获取值,没有则报错
>>> d7
{a: 222, b: 2, c: 3, f: 5, e: 6, name: 南北}
>>> d7[a]
222

# key in d : key是否在d中,是返回True,否则返回False
>>> d7
{a: 222, b: 2, c: 3, f: 5, e: 6, name: 南北}
>>> a in d7
True
>>> aa in d7
False

# get 根据键来获取值,如果没有则返回默认值
>>> d5 = {python:3.5, hello:world}
>>> d5.get(python, None)
3.5
>>> d5.get(1,None)

# keys 获取字典的键,并生成迭代器
>>> d5
{python: 3.5, hello: world}
>>> d5.keys()
dict_keys([python, hello])
>>> list(d5.keys())
[python, hello]
>>> tuple(d5.keys())
(python, hello)

# values 获取字典所有的值,返回一个可迭代对象
>>> d7
{a: 222, b: 2, c: 3, f: 5, e: 6, name: 南北}
>>> d7.values()
dict_values([222, 2, 3, 5, 6, 南北])
>>> list(d7.values())
[222, 2, 3, 5, 6, 南北]
>>>

# items 循环字典所有的key和value,生成一个迭代器
>>> d5
{python: 3.5, hello: world}
>>> d5.items()
dict_items([(python, 3.5), (hello, world)])
>>> list(d5.items())
[(python, 3.5), (hello, world)]
>>> tuple(d5.items())
((python, 3.5), (hello, world))
>>> str(d5.items())

# setdefault 无则增,有则查
>>> d7
{a: 1, b: 2, c: 3, f: 5}
>>> d7.setdefault(e,6)
6
>>> d7.setdefault(a, 2)
1

# update 新增字典:如果键存在那么就去修改值,如果键不存在那么就新增键值对
>>> d7.update(name=南北) # 注意第一个变量必须是形参,不能是实参
>>> d7
{a: 1, b: 2, c: 3, f: 5, e: 6, name: 南北}
>>> d7.update(a=222)
>>> d7
{a: 222, b: 2, c: 3, f: 5, e: 6, name: 南北}
>>> d1 = {1:2,3:4}
>>> d2 = {a:a, b:b}
>>> d1.update(d2)  # 可以添加多个
>>> d1
{1: 2, 3: 4, a: a, b: b}

# pop 根据键删除值,并返回被删除的对象,没有则返回默认值,如果没设置默认值则会报错
>>> d5
{python: 3.5, hello: world}
>>> d5.pop(hello)
world
>>> d5.pop(2,3)
3
>>> d5.pop(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: a
    
# popitem 随机删除一个键值对,并返回被删除的那个键值对
>>> d6 = {name:li, age:18}
>>> d6.popitem()
(age, 18)

# del 删除字典或者键值对,包括内容和定义
>>> d2 = {a:1, b:2}
>>> del d2[a]
>>> d2
{b: 2}
>>> del d2
>>> d2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name d2 is not defined
>>>

# clear 清空字典内容,但不清空定义
>>> d1
{a: 1, b: 2}
>>> d1.clear()
>>> d1
{}

# fromkeys 创建一个新字典,fromkeys(*args, **kwargs) 以*args中元素做字典的键,**kwargs为字典所有键对应的值
>>> d5 = {}
>>> d5.fromkeys((1,2))  # 返回一个新的字典
{1: None, 2: None}
>>> d5.fromkeys((3,4), a)
{3: a, 4: a}
>>> d5.fromkeys((3,4),(b,c))
{3: (b, c), 4: (b, c)}


# copy 复制字典
>>> d3 = {python:3.5, hello:world}
>>> d4 = d3.copy()
>>> d4
{python: 3.5, hello: world}

 

python数据结构:集合、字典

原文:https://www.cnblogs.com/su-sir/p/12482000.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!