码迷,mamicode.com
首页 > 编程语言 > 详细

Python的字典dict和set

时间:2017-09-26 17:44:01      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:通过   多个   eve   set   ini   bottom   add   返回   ant   

Python内置了字典:dict的支持,dict全称dictionary;

表达式为dict{key,value} 使用键值对来存储数据

eg: 使用dict来存储姓名和分数

d = {‘bob‘:20,‘lisa‘:80,‘tom‘:90}
>>>d
{‘bob‘:20,‘lisa‘:80,‘tom‘:90}

dict的查找速度比list快,dict叫做字典,从名称上就能看出来,就行我们查字典,以关键词查找;

而list的每个元素都要遍历一遍才能查找到自己想要的数据

如何访问key得到value?

查找的key不存在的时候,会报错keyerror

>>>d[‘bob‘]
20
>>>d[‘mm‘]
....
.....
keyerror

要避免keyerror,可以先判断key是否存在,还有dict提供的get()方法

>>>‘bob‘ in d
Ture
>>>‘jeny‘ in d
False
#dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:
>>>d.get(‘bob‘)
20
>>>d.get(‘lili‘) #不存在,返回None
#返回自己指定的错误返回值
>>>d.get(‘lili‘,5)
5

 

如何在dict中插入键值对?

d = {‘bob‘:20,‘lisa‘:80,‘tom‘:90}
#通过key插入
d[‘jerry‘] = 65
>>>d
{‘bob‘:20,‘lisa‘:80,‘tom‘:90,‘jerry‘:65}

当插入的键重复后,前者的value会被覆盖,python是动态语言,变量也是如此,后者覆盖前者。

要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

d = {‘bob‘:20,‘lisa‘:80,‘tom‘:90}
>>>d.pop(‘bob‘)
20
>>>d
[‘lisa‘:80,‘tom‘:90]

set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key.

写法为:set = ([x,y,z])   内含一个list作为输入集,写法看起来就像tuple内包含了一个list

如果set()内包含了重复的元素,set会自动剔除掉

s = ([1, 2, 3,3])
>>>s
[1,2,3]

add()方法添加元素到set内,remove()方法进行删除。

add()(待定,使用add方法添加时报错,list不存在add()方法,IDE会提示append()方法,可以正常添加)

insert()方法同list操作,正常。

 

s = ([1,2,3])
#>>>s.add(4)
#>>>s
#[1,2,3,4]
>>>s.remove(2)
>>>s
[1,3,4]

set的其他方法如下:

clear()清空set所有元素

name = set([Tom,Lucy,Ben])
name.clear()
print(name)
 
#输出:set()

 

copy()复制set到另一个set

name = set([Tom,Lucy,Ben])
new_name = name.copy()
print(new_name)
 
#输出:{‘Tom‘, ‘Lucy‘, ‘Ben‘}

difference()比较两个或者多个set,剔除重复元素,只要两者之间有重复,就删除。

n1 = set([2,3,4,5])
n2 = set([3,4])
n3 = set([2])
n = n1.difference(n2,n3)
print(n)
 
#输出:{5}
#返回A集合里面,在B和C集合中没有的元素,并生成新的集合

difference_update(删除A集合里面,在B集合中存在的元素。)

A = set([2,3,4,5])
B = set([4,5])
A.difference_update(B)
print(A)
 
#输出:{2, 3}

##########discard(移除元素) shell里面也没有提示这个,所以暂时不要使用,   用remove()就行

n = set([2,3,4])
n.discard(3)
print(n)
 
#输出:{2, 4}

pop()随机删除一个元素。

s = ([1,2,3,4,5])
>>>s.pop()
5

sort()正序排序

s = ([2,9,8,6])
>>>s.sort()
[2,6,8,9]

 

reverse()倒序排序

s = ([1,2,3,4,5])
>>>s.reverse()
[5,4,3,2,1]

目前shell就提示这么多,改动的话再编辑。

A = set([2,3,4,5])
B = set([4,5])
A.difference_update(B)
print(A)
 
#输出:{2, 3}

Python的字典dict和set

标签:通过   多个   eve   set   ini   bottom   add   返回   ant   

原文地址:http://www.cnblogs.com/mzc1997/p/7597519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!