数据类型之字典

一、字典简介

字典dict(dictionary),在其他语言中也成为map,使用键-值(key-value)的形式存储和展现,具有极快的查找速度。

字典的定义

d = {'key':value,...}

字典可以嵌套,value也可以使用列表等数据类型

字典通过键获取键所对应的值

d[key]

二、字典常用方法

1、clear(清除字典所有元素)

代码:

  1. def clear(self): # real signature unknown; restored from __doc__
  2. """ D.clear() -> None. Remove all items from D.
  3. 清除所有元素
  4. """
  5. pass

示例:

  1. >>> dic = {'name':'zhangxiaoyu', 'age':35, 'address':'beijing china'}
  2. >>> dic.clear()
  3. >>> dic
  4. {}

2、copy(浅拷贝)

代码:

  1. def copy(self): # real signature unknown; restored from __doc__
  2. """ D.copy() -> a shallow copy of D
  3. 浅拷贝,返回的是一个新的字典对象
  4. """
  5. pass

示例:

  1. >>> dic = {'name':'zhangxiaoyu', 'age':35, 'address':'beijing china'}
  2. >>> dic2 = dic.copy()
  3. >>> dic2
  4. {'age': 35, 'address': 'beijing china', 'name': 'zhangxiaoyu'}

注意:拷贝和赋值dic2 = dic完全不一样,等到讲到深浅拷贝的时候再来探讨这个问题

3、fromkeys(创建新的字典对象)

代码:

  1. @staticmethod # known case
  2. def fromkeys(*args, **kwargs): # real signature unknown
  3. """ Returns a new dict with keys from iterable and values equal to value.
  4. 用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
  5. """
  6. pass

示例:

  1. >>> dic = dict.fromkeys(['name','age'],10)
  2. >>> dic
  3. {'age': 10, 'name': 10}

4、get(获取键所对应的值)

代码:

  1. def get(self, k, d=None): # real signature unknown; restored from __doc__
  2. """ D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
  3. 获取键所对应的值如果存在返回值,如果不存在返回d所定义的值
  4. k:key
  5. d:默认值,如果不存在返回的值
  6. """
  7. pass

示例:

  1. >>> dic = {'name':'zhangxiaoyu', 'age':35, 'address':'beijing china'}
  2. >>> dic.get('name')
  3. 'zhangxiaoyu'
  4. >>> dic.get('tel','')
  5. ''
  6. >>> dic.get('tel')

注意:与d[key]取值不同的是,get方法如果key不存在则返回默认值,如果没定义返回的是None,而d[key]这种方式key不存在则会报错

  1. >>> dic.get('tel')
  2. >>> dic['tel']
  3. Traceback (most recent call last):
  4. File "<stdin>", line 1, in <module>
  5. KeyError: 'tel'

5、items(返回键值组成的元祖)

代码:

  1. def items(self): # real signature unknown; restored from __doc__
  2. """ D.items() -> a set-like object providing a view on D's items
  3. 返回键值组成的元祖列表,也就是同时返回键和值
  4. """
  5. pass

示例:

  1. >>> dic = {'name':'zhangxiaoyu', 'age':35, 'address':'beijing china'}
  2. >>> dic.items()
  3. dict_items([('age', 35), ('address', 'beijing china'), ('name', 'zhangxiaoyu')])

6、keys(返回字典的key)

代码:

  1. def keys(self): # real signature unknown; restored from __doc__
  2. """ D.keys() -> a set-like object providing a view on D's keys
  3. 返回字典的所有的key
  4. """
  5. pass

示例:

  1. >>> dic = {'name':'zhangxiaoyu', 'age':35, 'address':'beijing china'}
  2. >>> dic.keys()
  3. dict_keys(['age', 'address', 'name'])

说明:2.X返回的直接是列表对象,3.X返回的dict_keys对象,但是也能通过in做是否存在的判断或循环

7、pop(删除指定key的元素,并返回key所对应的值)

代码:

  1. def pop(self, k, d=None): # real signature unknown; restored from __doc__
  2. """
  3. D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
  4. If key is not found, d is returned if given, otherwise KeyError is raised
  5. 删除指定key的元素,并返回key所对应的值,如果不存在返回默认值
  6. k:key
  7. d:默认值,如果不存在返回的值
  8. """
  9. pass

示例:

  1. >>> dic = {'name':'zhangxiaoyu', 'age':35, 'address':'beijing china'}
  2. >>> dic.pop('name')
  3. 'zhangxiaoyu'
  4. >>> dic
  5. {'age': 35, 'address': 'beijing china'}
  6. >>> dic.pop('tel','')
  7. ''

8、popitem(删除元素)

代码

  1. def popitem(self): # real signature unknown; restored from __doc__
  2. """
  3. D.popitem() -> (k, v), remove and return some (key, value) pair as a
  4. 2-tuple; but raise KeyError if D is empty.
  5. 删除元素并返回删除的元素key和value组成的元祖
  6. """
  7. pass

示例:

  1. >>> dic = {'name':'zhangxiaoyu', 'age':35, 'address':'beijing china'}
  2. >>> dic.popitem()
  3. ('age', 35)
  4. >>> dic
  5. {'address': 'beijing china', 'name': 'zhangxiaoyu'}

注意:由于字典是无序的,所以使用这个方法删除的不一定是哪个元素,所以慎用

9、setdefault(设置默认值,这个方法要与get方法配合使用相当于get方法的d参数)

代码:

  1. def setdefault(self, k, d=None): # real signature unknown; restored from __doc__
  2. """ D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
  3. 设置默认值,这个方法要与get方法配合使用相当于get方法的d参数,同样也适用于d[key]这种取值方法
  4.  
  5. """
  6. pass

示例:

  1. >>> dic = {'name':'zhangxiaoyu', 'age':35, 'address':'beijing china'}
  2. >>> dic.setdefault('tel','')
  3. ''
  4. >>> dic.get('tel')
  5. ''
  6. >>> dic
  7. {'age': 35, 'tel': '', 'address': 'beijing china', 'name': 'zhangxiaoyu'}
  8. >>> dic['tel']
  9. ''

感觉完全是设置了一个新的键值对

10、update(将另一个字典的键值添加到当前字典中)

代码:

  1. def update(self, E=None, **F): # known special case of dict.update
  2. """
  3. D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
  4. If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
  5. If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
  6. In either case, this is followed by: for k in F: D[k] = F[k]
  7. 将另一个字典的键值添加到当前字典中
  8. 不存在的键直接添加,存在的键将被覆盖
  9. """
  10. pass

示例:

  1. >>> dic = {'name':'zhangxiaoyu', 'age':35, 'address':'beijing china'}
  2. >>> dic2 = {'tel':'','name':'zhangsan'}
  3. >>> dic.update(dic2)
  4. >>> dic
  5. {'age': 35, 'tel': '', 'address': 'beijing china', 'name': 'zhangsan'}

11、values(返回所有的值)

代码:

  1. def values(self): # real signature unknown; restored from __doc__
  2. """ D.values() -> an object providing a view on D's values
  3. 返回字典所有的值
  4. """
  5. pass

示例:

  1. >>> dic.values()
  2. dict_values([35, 'beijing china', 'zhangxiaoyu'])

说明:2.X返回的直接是列表对象,3.X返回的dict_values对象,但是也能通过in做是否存在的判断或循环

我的Python成长之路---第二天---Python基础(8)---2016年1月9日(晴)的更多相关文章

  1. 我的Python成长之路---第二天---Python基础(7)---2016年1月9日(晴)

    再说字符串 一.字符串的编码 字符串的编码是个很令人头疼的问题,由于计算机是美国人发明的,他们很理所当然的认为计算机只要能处理127个字母和一些符号就够用了,所以规定了一个字符占用8个比特(bit)也 ...

  2. 我的Python成长之路---第八天---Python基础(25)---2016年3月5日(晴)

    多进程 multiprocessing模块 multiprocessing模块提供了一个Process类来代表一个进程对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  3. 我的Python成长之路---第八天---Python基础(24)---2016年3月5日(晴)

    多线程编程 什么是多线程,线程是操作系统能够进行运算调度的最小单位.他包含在进程之中,是进程中的实际运作单位.线程是进程中一个单顺序的空值六,一个进程可以并发多个线程,每个线程可以并行处理不同的任务. ...

  4. 我的Python成长之路---第八天---Python基础(23)---2016年3月5日(晴)

    socketserver 之前讲道德socket模块是单进程的,只能接受一个客户端的连接和请求,只有当该客户端断开的之后才能再接受来自其他客户端的连接和请求.当然我们也可以通过python的多线程等模 ...

  5. python成长之路——第二天

    cpython:c解释器  .pyc(字节码)——机器码 jpython :java解释器   java字节码   ironpython :C#解释器   C#字节码   .... 上面的:编译完之后 ...

  6. 我的Python成长之路---第一天---Python基础(1)---2015年12月26日(雾霾)

    2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算 ...

  7. 我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)

    作业二:三级菜单 三级菜单 可一次进入各个子菜单 思路: 这个题看似不难,难点在于三层循环的嵌套,我的思路就是通过flag的真假来控制每一层的循环的,简单来说就是就是通过给每一层循环一个单独的布尔变量 ...

  8. Python成长之路第二篇(1)_数据类型内置函数用法

    数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> a ...

  9. python成长之路第二篇(4)_collections系列

    一.分别取出大于66的数字和小于66的数字 小练习:需求要求有一个列表列表中存着一组数字,要求将大于66的数字和小于66的数字分别取出来 aa = [11,22,33,44,55,66,77,88,9 ...

随机推荐

  1. 【转】android开发中关于模拟器emulation的常见问题

    [转]android开发中关于模拟器emulation的常见问题 Trouble: 无法启动android模拟器,提示 XDM authorization key matches an existin ...

  2. 【JAVA】修改项目包名

    从最后一层开始修改,一步步往上递增修改.

  3. 「OC」 封装

    一.面向对象和封装 面向对象的三大特性:封装.继承和多态 在OC语言中,使用@interface和@implementation来处理类.   @interface就好像暴露在外面的时钟表面,像外界提 ...

  4. 【xcode】错误之Could not launch "" failed to get the task for process

    http://blog.csdn.net/teng_ontheway/article/details/8467932 在Xcode下编译工程正常,在模拟器下运行正常,最后在真机上运行的时候出现了如下错 ...

  5. win7和ubuntu双系统,win7时间晚8小时解决办法。

    装了Win7和Ubuntu双系统后发现,使用Ubuntu后再登陆win7时系统显示时间不准确,比实际时间晚了8小时. 搜索后发现原来Linux和Windows的系统时间管理是不同的.Linux是以主板 ...

  6. UNIX网络编程 12 15共享内存区

    管道,FIFO,消息队列,在两个进程交换信息时,都要经过内核传递 共享内存可以绕过,默认fork生成的子进程 并不与父进程共享内存区 mmap munmap msync 父子进程共享内存区的方法之一是 ...

  7. 转: requirejs中文api (详细)

    RequireJS的目标是鼓励代码的模块化,它使用了不同于传统<script>标签的脚本加载步骤.可以用它来加速.优化代码,但其主要目的还是为了代码的模块化.它鼓励在使用脚本时以modul ...

  8. 如何用java比较两个时间或日期的大小

    有一个字符串的时间,比如"2012-12-31 16:18:36" 与另一个时间做比较,如果前者比后者早,则返回true,否则返回false. 为此,我设计了一个方法. impor ...

  9. ThinkPHP 3.1.2 模板中的基本语法<2>

    本节课大纲: 一.导入CSS和JS文件 1.css link js scr <link rel='stylesheet' type='text/css' href='__PUBLIC__/Css ...

  10. fedora21 codeblocks在编辑装态下无法输入

    来自:http://forum.ubuntu.com.cn/viewtopic.php?f=88&t=284409   用codeblocks,突然发现怎么敲键盘都不能输入 搜索后得知: Co ...