Python学习笔记----集合与字典

1. 字符串、列表和元组的元素都是按下标顺序排列,可通过下 标直接访问,这样的数据类型统称为序列。 其中,字符串和元组中的元素不能修改,而列表中的元素可以修改。

集合

1. 与元组和列表类似,Set (集合)中同样可以包含多个不同类型的元素, 但集合中的各元素无序、 不允许有相同元素且元素必须是可哈希 (hashable)的对象。

注:可哈希对象是指拥有 __hash__(self) 内置函 数的对象。列表、集合和字典类型的数据不是可哈希对象,所以它们不能作为集合中的元素。元组、字符串和数值都是可哈希对象。

2. 创建集合

集合中的所有元素都写在一对大括号“{}”中,各元素之间用逗号分隔。

创建集合时,既可以使用{},也可以使用set函数。

set函数的语法格式如下:set([iterable]) ,其中,iterable是一个可选参数,表示一个可迭代对象。

例如:

a={10, 2.5, 'test', 3+4j, True, 5.3, 2.5}
print(a) #输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”

b=set('hello')
print(b)
#输出“{'e', 'l', 'o', 'h'}”
#传入了一个字符串参数,执行set函数时会依次将每个字符取出来形成子串作为新建集合中的元素。

c=set([10, 2.5, 'test', 3+4j, True, 5.3, 2.5])
print(c) 
# 输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
# 传入了列表作为参数,执行set函数时会依次将每个元素取出作为新建集合中的元素

d=set((10, 2.5, 'test', 3+4j, True, 5.3, 2.5))
print(d) 
# 输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
# 传入了元组作为参数,执行set函数时会依次将每个元素取出作为新建集合中的元素

注:可迭代(iterable)对象是指可以一次返回它的一个元素,如前面学 习的字符串、列表、元组都是可迭代的数据类型。

注:

  • 与字符串、列表、元组等序列类型不同,集合中的元素不能使用下 标方式访问。
  • 集合主要用于做并、交、差等集合运算,以及基于集合进行元素的 快速检索。
  • {}用于创建空字典,如果要创建一个空集合,则需要使用set()

 例题:

下列选项中,执行时不会报错的语句是(    )。

A.{['Python',True]}

B.{3.5,[1.2,True]}

C.{3.5,{1.2,True}}

D.{3.5,1.2,True}

正确答案:D

解析:集合中的元素必须是可哈希的。哈希是数据结构中的一种存储方式,其特点是检索效率很高。在Python中,可变类型的数据都不可哈希,不能作为集合的元素;不可变类型的数据都可哈希,可以作为集合的元素。内置类型中,数字(含布尔值)、字符串和元组是不可变类型,而列表、集合和字典是可变类型。A选项和B选项中,列表是可变类型,因此不能作为集合中的元素;C选项中,集合是可变类型,因此不能作为集合中的元素;D选项中,数字和布尔值都是不可变类型,因此执行时不会报错。

字典

 1. Dictionary(字典) 是另一种无序的对象集合。

但与集合不同,字典是一种 映射类型,每一个元素是一 个键(key):值(value)对。

2. 在一个字典对象中,键必须是唯一的,即不同元素的键不能相同;

另外,键必须是可哈希数据,即键不能是列表、集合、 字典等类型;值可以是任意类型。

3. 对于不包含任何元素的字典,即{},称为空字典。

创建字典

既可以使用{},也可以使用dict函数。

1. 创建空字典

例如:

a={}

b=dict()

执行完毕后,a和b是两个不包含任何元素的空字典。

2. 如果在创建字典的同时,需要给出字典中的元素, 则可以使用下面的方法:

(1) {k1:v1,k2:v2,…,kn:vn}

   #ki和vi(i=1,2,…,n)分别是每一个元素的键和值

a={'one':1, 'two':2, 'three':3}

(2)dict(**kwarg)

b=dict(one=1, two=2, three=3)

#**kwarg是一个或多个赋值表达式,两个赋值表达式之间 用逗号分隔

(3)dict(z)

#z是zip函数返回的结果

c=dict(zip(['one','two','three'], [1,2,3]))

(4)dict(ls)

d=dict([('one',1), ('two',2), ('three',3)])

#ls是元组的列表,每个元组包含两个元素,分别对应键和值

(5)dict(dictionary)

#dictionary是一个已有的字典

e=dict({'one':1, 'two':2, 'three':3})

zip函数

1. zip函数的参数是多个 可迭代的对象(列表 等),其功能是将不 同对象中对应的元素 分别打包成元组,然 后返回由这些元组组 成的列表。 

在Python 3.x中为了减少内 存,zip函数返回的是一个 对象,可以通过list函数转换为列表 ,

如通过 “list(zip(['one','two','three'], [1,2,3]))” 可得到列表 “ [('one', 1), ('two', 2), ('three', 3)]”

访问字典元素

1. 与列表等序列对象不同,在访问字典中的元素时不能通过下标方式访问, 而是通过键访问

info={'name':'张三', 'age':19, 'score':{'python':95,'math':92}}
print(info['name']) 
#输出“张三”

print(info['age']) 
#输出“19”

print(info['score']) 
#输出“{'python': 95, 'math': 92}”

print(info['score']['python']) 
#输出“95”

print(info['score']['math']) 
#输出“92”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值