200 ? "200px" : this.width)!important;}
-->

介绍

dict(dictionary),在其他语言中也称为map,使用键-值(key-value)存储。set和dict类似,也是一组key的集合,但不存储value。字典和set的key都是不允许重复且key不能是列表。

 
 
一、dict(字典的缩写)
字典和前面讲的list(列表)很相似,但是list不存在value,同时字典也和xml、json很像。字典使用一对大括号表示
1.创建字典表
创建一个学生分数字典
  1. s={'stu1':80,'stu2':90,'stu3':60}

2.查询

查询stu1的分数

  1. >>> s['stu1']
  2. 80
  3. >>>

3.修改value

  1. >>> s['stu1']=50
  2. >>> s
  3. {'stu3': 60, 'stu2': 90, 'stu1': 50}

4.增加key

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

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

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

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

读取stu8的分数

  1. >>> s['stu8-9'][0]
  2. 80
  3. >>>

5.删除key

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

例如:删除key"stu1"

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

6.判断一个key是否存在

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

  1. >>> s['stu1']
  2. Traceback (most recent call last):
  3. File "<pyshell#14>", line 1, in <module>
  4. s['stu1']
  5. KeyError: 'stu1'
  6. >>>

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

  1. s.get('stu1')

可以用print打印出None

  1. >>> print (s.get('stu1'))
  2. None
  3. >>>

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

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

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

  1. >>> 'stu1' in s
  2. False
  3. >>> 'stu2' in s
  4. True

二、set([])

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

1.创建set

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

  1. >>> se=set(['a','b','c'])
  2. >>> se
  3. {'b', 'c', 'a'}

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

2.读取key 

  1. >>> se
  2. {'b', 'c', 'a'}

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

4.增加key

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

  1. >>> se.add('d')
  2. >>> se
  3. {'b', 'c', 'd', 'a'}
  4. >>>

5.删除key

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

  1. >>> se.remove('c')
  2. >>> se
  3. {'b', 'd', 'a'}
  4. >>>

6.设置一个list key

  1. >>> se.add(['e','f'])
  2. Traceback (most recent call last):
  3. File "<pyshell#74>", line 1, in <module>
  4. se.add(['e','f'])
  5. 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([])的更多相关文章

  1. Python dict operation introduce

    字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: d = ...

  2. Python dict(或对象)与json之间的互相转化

    Python dict(或对象)与json之间的互相转化 原文转载自 1.JSON:JavaScript 对象表示法,是轻量级的文本数据交换格式,独立于语言,平台 2.JSON 语法规则 数据在名称/ ...

  3. python & dict & switch

    python & dict & switch python 中是没用switch语句的,这应该是体现python大道至简的思想,python中一般多用字典来代替switch来实现. # ...

  4. Python dict() 函数

    Python dict() 函数  Python 内置函数 描述 dict() 函数用于创建一个字典. 语法 dict 语法: class dict(**kwarg) class dict(mappi ...

  5. python dict乱码如何解决

    定义字典并直接输出,结果输出结果中文是乱码展示 d={'name':'lily','age':18,'sex':'女','no':1121} print d 输出结果: {'age': 18, 'no ...

  6. 转:python dict按照value 排序

    我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value ...

  7. (翻译)如何对python dict 类型按键(keys)或值(values)排序

    如何对dict类型按键(keys)排序(Python 2.4 或更高版本): mydict = {'carl':40, 'alan':2, 'bob':1, 'danny':3} for key in ...

  8. Python dict 按键和值排序

    python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行:1 下面的是按照value的值从大到小的顺序来排序. ...

  9. Python dict和set的实现原理

    在python的dict中间进行查找某个key操作时,查找所需时间不会随着dict中键值对数量增多而变长,(时间复杂度为O(1))但是list中就会(时间复杂度为O(N)),这是因为list查询实现的 ...

随机推荐

  1. LeetCode中有技巧的题需要面试前记得的

    https://leetcode.com/problems/insert-interval/ http://www.cnblogs.com/yxzfscg/p/4459173.html https:/ ...

  2. POJ 1146 ID Codes (UVA146)

    // 求下一个排列// 如果已经是最后一个排列// 就输出 No Successor// stl 或 自己写个 生成排列 我测试了下 两个速率是一样的.只是代码长度不同 /* #include < ...

  3. Liunx系统学习一,liunx系统的目录结构及含义

    LIUNX系统目录结构: “/” ===>这是linux文件系统的入口,也是整个linux文件系统的根目录,linux不同于windows,没有所谓的C,D,E盘,整个liunx只有一个根分区 ...

  4. SpringMVC——注解的使用与结果跳转方式

    1.项目结构 2.源代码 package com.zhengbin.controller; import java.io.IOException; import javax.servlet.Servl ...

  5. webview javascript 注入方法

    Android中向webview注入js代码可以通过webview.loadUrl("javascript:xxx")来实现,然后就会执行javascript后面的代码. 但是当需 ...

  6. UVA 12532-Interval Product(BIT)

    题意: 给n个数字的序列,C v p 把v位上的数字置成p , S l r代表求区间[l,r]各数字相乘得数的符号,对于每个S输出所得符号(’+‘,’-‘,’0‘) 分析: 开两个数组表示区间负数的个 ...

  7. IOS CAShapeLayer CAGradientLayer UIBezierPath 使用实例

    CGRect rect = CGRectMake(100, 100, 100, 100); UIView * bgView = [[UIView alloc]initWithFrame:rect]; ...

  8. 仿酷狗音乐播放器开发日志二十三 修复Option控件显示状态不全的bug(附源码)

    转载请说明原出处,谢谢~~ 整个仿酷狗工程的开发将近尾声,现在还差选项设置窗体的部分,显然在设置窗体里用的最多的就是OptionUI控件,我在写好大致的布局后去测试效果,发现Option控件的显示效果 ...

  9. Hadoop 学习之 FAQ

    在Hadoop的学习与使用过程中同样如此.这里为大家分享Hadoop集群设置中经常出现的一些问题,以下为译文: 1.Hadoop集群可以运行的3个模式? 单机(本地)模式 伪分布式模式 全分布式模式 ...

  10. andriod的简单用法2

    1.在Activity中使用menu //创建菜单项 public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this ...