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

python dict{}和set([])

时间:2016-07-21 00:44:47      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

介绍

dict(dictionary),在其他语言中也称为map,使用键-值(key-value)存储。set和dict类似,也是一组key的集合,但不存储value。字典和set的key都是不允许重复且key不能是列表。
 
 
一、dict(字典的缩写)
字典和前面讲的list(列表)很相似,但是list不存在value,同时字典也和xml、json很像。字典使用一对大括号表示
1.创建字典表
创建一个学生分数字典
s={stu1:80,stu2:90,stu3:60}

2.查询

查询stu1的分数

>>> s[stu1]
80
>>> 

3.修改value

>>> s[stu1]=50
>>> s
{stu3: 60, stu2: 90, stu1: 50}

4.增加key

例如增加一个代表学生stu4-stu7的key-value

>>> s[stu4-7]=[40,80,50,60]
>>> s
{stu3: 60, stu2: 90, stu1: 50, stu4-7: [40, 80, 50, 60]}

注意:key不能是变量(python里面的变量不太容易理解,就简单的理解key不能是list就行),但是value可以是变量(python里面的),value可以是常量、字符串、list、tuple等

>>> s[stu8-9]=(80,50)
>>> s
{stu3: 60, stu8-9: (80, 50), stu2: 90, stu1: 50, stu4-7: [40, 80, 50, 60]}

读取stu8的分数

>>> s[stu8-9][0]
80
>>> 

5.删除key

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

例如:删除key"stu1"

>>> s.pop(stu1)
50
>>> s
{stu3: 60, stu8-9: (80, 50), stu2: 90, stu4-7: [40, 80, 50, 60]}
>>> s[stu1]
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    s[stu1]
KeyError: stu1
>>> 

6.判断一个key是否存在

方法1:直接打印输出,如果key不存在会返回错误

>>> s[stu1]
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    s[stu1]
KeyError: stu1
>>> 

方法2:通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:

s.get(stu1)

可以用print打印出None

>>> print (s.get(stu1))
None
>>> 

可以自己指定key不存在返回的值,例如返回1,但是返回值必须是整形

>>> s.get(stu1,1)
1

方法3:通过in判断key是否存在,不存在返回Flase

>>> stu1 in s
False
>>> stu2 in s
True

二、set([])

set和dict类似,也是一组key的集合,但不存储value;set和dict一样key不允许是list且key不能重复。

1.创建set

要创建一个set,需要提供一个list作为输入集合,注意set的固定格式,set([]),在set()中加入list

>>> se=set([a,b,c])
>>> se
{b, c, a}

注意:list中的每一个元素都是一个key,但是元素不能是list可以是常量、字符串、tuple、浮点型

2.读取key 

>>> se
{b, c, a}

set不支持索引,所以没办法像list和tuple那样根据索引获取指定的key,比如se[0]会返回错误

4.增加key

通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果

>>> se.add(d)
>>> se
{b, c, d, a}
>>> 

5.删除key

通过remove(key)方法可以删除元素

>>> se.remove(c)
>>> se
{b, d, a}
>>> 

6.设置一个list key

>>> se.add([e,f])
Traceback (most recent call last):
  File "<pyshell#74>", line 1, in <module>
    se.add([e,f])
TypeError: unhashable type: list

返回错误:没有对应的list哈希表

注意:这里的[‘e‘,‘f‘]指的是一个元素(key),只不过它是list元素,set([])中的key不支持list.

总结

从dict{}和set([])的返回key可以发现它们是没有固定的顺序的。但是key不能是list。dict的value可以是任何已知的类型值。

 

 

备注:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

python dict{}和set([])

标签:

原文地址:http://www.cnblogs.com/chenmh/p/5684584.html

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