python字典和集合对象可以进行索引操作_Python学习笔记的字典和集合,python,之

字典是一种无序的映射的集合,包含一列的“键:值”

字典常用花括号表示:{}

特点:

字典的键通常采用字符串,但也可以用数字、元组等不可变的类型

字典值可以是任意类型

字典也成为了关联数组或散列表,它通过键映射到值,字典是无序的,它通过键来索引映射的值,而不是通过位置来索引

字典属于可变映射,通过索引来修改键映射的值

字典长度可变,可为字典添加或删除“键:值”对

字典可以任意嵌套,即映射的值可以是一个字典

字典存储的是对象的引用,而不是兑现本身

字典基本操作

字典基本操作包括创建字典、求长度、关系判断和索引等

创建字典

>>>{} #创建空字典

>{}

>>>dict{}#创建空字典

>{}

#使用字典常量

>>>{'name':'Molly','age':18,'sex':'f'}

>{'sex':'f','age':18,'name':'Molly'}

#使用嵌套的字典

>>>{'book':{'Python':100,'C++':99}}

>{'book':{'c++':99,'Python':100}}

#用数字作为键

>>>{1:'one',2:'two',3:'three'}

>{1:'one',2:'two',3:'three'}

#用元组作为键

>>>{(1,3,5):10,(2,4,6):50}

>{(1,3,5):10,(2,4,6):50}

#使用赋值格式的键值对创建字典

>>>dict(name='Molly',age=18)

>{'age':18,'name':'Molly'}

#使用包含键元组和值元组的列表创建字典

>>>dict([('name','Molly'),('age',18)])

>{'age':18,'name':'Molly'}

#创建无映射值得字典,默认值为None

>>>dict.fromkeys(['name','age'])

>{'name':None,'age':None}

#创建值相同的字典

>>>dict.fromkeys(['name','age'],0)

>{'name':0,'age':0}

#使用字符串创建无映射值的字典

>>>dict.fromkeys('abc')

>{'a':None,'b':None,'c':None}

#使用字符串和映射值创建字典

>>>dict.fromkeys('abc',10)

>{'a':10,'b':10,'c':10}

#使用自拍解析键值列表创建字典

>>>dict(zip(['name','age'],['Molly',18]))

>{'age':18,'name':'Molly'}

>>>x={}#创建一个空字典

>>>x['name']='Molly'#通过赋值添加“键:值”对

>>>x['age']=18

>>>x

>{'age':18,'name':'Molly'}

>>> a = dict(one=1, two=2, three=3)

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

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

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

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

求长度

len()方法可返回字典长度,即“键:值”对的个数

>>>x=dict(zip(['name','age'],['Molly',18]))

>>>len(x)

>2

关系判断

in操作符可用于判断字段是否包含某个键

>>>x=dict(zip(['name','age'],['Molly',18]))

>>>'name' in x

>Ture

索引

通过键来索引映射的值

>>>x={'book':{'Python':100,'C++':99},'WM':'太完美'}

>>>x['book']

>{'Python':100,'C++':99}

>>>x['WM']

>{'太完美'}

>>>X['booke']['Python'] #用两个键索引嵌套的字典

>100

通过索引修改映射值

>>>x=dict(name='Molly',age=18)

>>>x

>{'age':18,'name':'Molly'}

>>>x['age']=20

>>>x

>{'age':20,'name':'Molly'}

>>>x['phone']='123456789'

>>>x

>{'phone':'123456789','age':20,'name':'Molly'}

通过索引删除键值对

>>>x={'name':'Molly','age':18}

>>>del x['name']

>>>x

>{'age':18}

字典常用方法

1.clear()

删除全部字典对象

>>>x=dict(name='Molly',age=18)

>>>x.clear()

>>>x

>{}

2.copy()

复制字典对象

>>>x={'name':'Molly','age':18}

>>>y=x

>>>x,y

>({'age':18,'name':'Molly'},{'age':18,'name':'Molly'})

>>>y['name']='MOLI' #通过已修改字典

>>>x,y

>({'age':18,'name':'MOLI'},{'age':18,'name':'MOLI'})

>>>y is x #判断是否引用相同对象

>True

>>>y=x.copy() #y引用复制的字典

>>>y['name']='MoLi'#修改y引用的字典映射值,此时不影响x的引用

>>>x,y

>({'age':18,'name':'MOLI'},{'age':18,'name':'MoLi'})

>>>y is x #判断是都引用相同对象

>False

3.get(key[,default])

返回键key映射的值,如果key不存在,返回空值。可用default参数指定不存在的键的返回值

>>>x={'name':'Molly','age':18}

>>>x.get('name')

>'Molly'

>>>x.get('sex')#不存在的键返回空值

>>>print(x.get('sex'))

>None

>>>x.get('sex','xxx')#不存在的键返回指定值

>'xxx'

4.pop(key[,default])

从字典中删除键,并返回映射值,若键不存在,则返回default;未指定default参数时,则会出错

>>>x={'name':'Molly','age':18}

>>>x.pop('name')

>'Molly'

>>>x

>{'age':18}

>>>x.pop('sex','xxx')#删除不存在的键

>'xxx'

>>>x.pop('sex')#删除不存在的键,未指定default

>KeyErro:...

5.popitem()

从字典删除并返回键值对元组。空字典调用该方法会产生KeyErro错误

>>>x={'name':'Molly','age':18}

>>>x.popitem() #删除并返回键值对元组

>('age',18)

>>>x

>{'name':'Molly'}

>>>x.popitem()

>('name','Molly')

>>>X

>{}

6.setdefault(key[,default])

返回映射值或为字典添加键值对,指定键key在字典中存在时,返回映射值。若指定键key不存在,则添加“key:default”键值对,省略default时,映射值默认为None

>>>x={'name':'Molly','age':18}

>>>x.setdefault('name')

>'Molly'

>>>x.setdefault('sex')

>>>x

>{'sex':None,'age':18,'name':'Molly'}

>>>x.setdefault('phone','123456789')

>>>x

>{'sex':None,'phone':'123456789','age':18,'name':'Molly'}

7.update(other)

用于为字典添加键值。参数other可以是另一个字典或用赋值格式表示的元组,若字典已存在同名的键,则映射值被覆盖

>>>x={'name':'Molly','age':18}

>>>x.update({'age':20,'sex':'f'})

>>>x

>{'sex':'f','age':20,'name':'Molly'}

>>>x.update(name='MOLI')

>>>x

>{'sex':'f','age':20,'name':'MOLI'}

>x.update(code = 10,address='newStreet')

>{'sex':'f','address':'newStreet','age':20,'code':10,'name':'MOLI'}

字典视图

字典的items()、keys()和value()方用于返回字典键值对的视图对象。视图对象支持迭代操作,并可反映未来对字典的修改。视图对象不是列表,不支持索引。通常用list()方法将视图对象转换为列表

1.items()

返回键值对视图

>>>x={'name':'Molly','age':18}

>>>y=x.items()

>>>y #显示键值对视图,键值对视图为dict_items对象

>dict_items([('age',18),('name','Molly')])

>>>for a in y:print(a) #迭代键值对视图

>>>x

>('age',18)

>('name','Molly')

>>>x['age']=20 #修改字典

>>>x

>{'age':20,'name':'Molly'}

>>>y #从显示结果可以看出视图反映了字典中的修改内容

>dict_items([('age',20),('name','Molly')])

>>>list(y) #将键值对视图转换为列表

>[('age',20),('name','Molly')]

2.keys()

返回字典中所有键的视图

>>>x={'name':'Molly','age':18}

>>>y=x.keys()#返回键的视图

>>>y#显示键视图,键视图为dict_keys对象

>dict_keys(['age','name'])

>>>x['sex']='f'#为字典添加键值对

>>>x

>{'sex':'f','age':20,'name':'Molly'}

>>>y#显示结果说明键视图包含了新添加的键

>dict_keys(['sex','age','name'])

>>>list(y)#将键视图转换为列表

>['sex','age','name']

3.values()

返回字典中全部值得视图

>>>x={'name':'Molly','age':18}

>>>y=x.values()#返回字典的值视图

>>>y#显示值视图,值视图为dict_values对象

>dict_value([18,'Molly'])

>>>x['sex']='f'#添加键值对

>>>y#值视图包含了新添加的值

>dict_value(['f',18,'Molly'])

4.键视图的集合操作

键视图支持各种集合运算,键值对视图和值视图不支持集合运算

>>>x={'a':1,'b':2}

>>>kx=x.keys()

>>>kx

>dict_keys(['a','b'])

>>>y={'b':3,'c':4}

>>>ky=y.keys()

>>>ky

>dict_keys(['c','b'])

>>>kx-ky#求差集

>{'a'}

>>>kx|ky#求并集

>{'a','b','c'}

>>>kx&ky#求交集

>{'b'}

>>>kx^ky#求对称差集

>{'a','c'}

集合

集合是无序的

一堆元素用花括号括起来

集合中的元素具有唯一性

使用{}或者set()方法创建集合

>>>num={}

>>>type(num)

>

>>>num1={1,2,3,4,5}

>>>type(num1)

>

>>>num2={1,1,2,5,5,3,1,2,4,6,6,7,8}

>>>num2

>{1, 2, 3, 4, 5, 6, 7, 8}

>>>set1 = set([1,2,3,5,6,4])

>{1, 2, 3, 4, 5, 6}

>>>type(set1)

>

去除列表中重复的数字

未用集合的方式

>>>num=[1,2,3,4,4,5,1,4,6,0,1]

>>>temp =[]

>>>for each in num:

if each not in temp:

temp.append(each)

>>>temp

>[1,2,3,4,5,6,0]

使用集合的方式

用set得到的集合是无序的,可以使用list方法就可以对集合进行排序

>>>num = [1,2,3,4,4,5,1,4,6,0,1]

>>>num = list(set(num))

>>>num

>[0,1,2,3,4,5,6]

可以使用in或not in来判断一个元素是否在集合中已经存在

>>>num2={1, 2, 3, 4, 5, 6, 7, 8}

>>>1 in num2

>True

>>>'1' in num2

>False

集合中的方法

>>>num2={1, 2, 3, 4, 5, 6, 7, 8}

>>>num2.add(9)

>>>num2

>num2={1, 2, 3, 4, 5, 6, 7, 8,9}

>>>num2.remove(9)

>>>num2

>{1, 2, 3, 4, 5, 6, 7, 8}

不能被随意的增加或者减少,使用frozen,比可变集合

>>>num = frozenset([1,2,3,4,5])

>>>num.add(6)

>Traceback (most recent call last):

File "", line 1, in

num.add(6)

AttributeError: 'frozenset' object has no attribute 'add'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值