Python中字典创建、遍历、添加等实用操作技巧合集


Posted in Python onJune 02, 2015

字段是Python是字典中唯一的键-值类型,是Python中非常重要的数据结构,因其用哈希的方式存储数据,其复杂度为O(1),速度非常快。下面列出字典的常用的用途.
一、字典中常见方法列表

#方法                                  #描述  

-------------------------------------------------------------------------------------------------  

D.clear()                              #移除D中的所有项  

D.copy()                               #返回D的副本  

D.fromkeys(seq[,val])                  #返回从seq中获得的键和被设置为val的值的字典。可做类方法调用  

D.get(key[,default])                   #如果D[key]存在,将其返回;否则返回给定的默认值None  

D.has_key(key)                         #检查D是否有给定键key  

D.items()                              #返回表示D项的(键,值)对列表  

D.iteritems()                          #从D.items()返回的(键,值)对中返回一个可迭代的对象  

D.iterkeys()                           #从D的键中返回一个可迭代对象  

D.itervalues()                         #从D的值中返回一个可迭代对象  

D.keys()                               #返回D键的列表  

D.pop(key[,d])                         #移除并且返回对应给定键key或给定的默认值D的值  

D.popitem()                            #从D中移除任意一项,并将其作为(键,值)对返回  

D.setdefault(key[,default])            #如果D[key]存在则将其返回;否则返回默认值None  

D.update(other)                        #将other中的每一项加入到D中。  

D.values()                             #返回D中值的列表

二、创建字典的五种方法

方法一: 常规方法   

# 如果事先能拼出整个字典,则此方法比较方便

>>> D1 = {'name':'Bob','age':40} 

方法二: 动态创建
                  

# 如果需要动态地建立字典的一个字段,则此方法比较方便

>>> D2 = {}  

>>> D2['name'] = 'Bob'  

>>> D2['age']  =  40  

>>> D2  

{'age': 40, 'name': 'Bob'}

方法三:  dict--关键字形式      
# 代码比较少,但键必须为字符串型。常用于函数赋值

>>> D3 = dict(name='Bob',age=45)  

>>> D3  

{'age': 45, 'name': 'Bob'}

方法四: dict--键值序列

# 如果需要将键值逐步建成序列,则此方式比较有用,常与zip函数一起使用

>>> D4 = dict([('name','Bob'),('age',40)])  

>>> D4  

{'age': 40, 'name': 'Bob'}


>>> D = dict(zip(('name','bob'),('age',40)))  

>>> D  

{'bob': 40, 'name': 'age'} 

方法五: dict--fromkeys方法# 如果键的值都相同的话,用这种方式比较好,并可以用fromkeys来初始化
>>> D5 = dict.fromkeys(['A','B'],0)  

>>> D5  

{'A': 0, 'B': 0} 

如果键的值没提供的话,默认为None
>>> D3 = dict.fromkeys(['A','B'])  

>>> D3  

{'A': None, 'B': None} 

三、字典中键值遍历方法

>>> D = {'x':1, 'y':2, 'z':3}          # 方法一  

>>> for key in D:  

    print key, '=>', D[key]    

y => 2  

x => 1  

z => 3  

>>> for key, value in D.items():       # 方法二  

    print key, '=>', value     

y => 2  

x => 1  

z => 3  

  

>>> for key in D.iterkeys():           # 方法三  

    print key, '=>', D[key]    

y => 2  

x => 1  

z => 3  

>>> for value in D.values():           # 方法四  

    print value   

2  

1  

3  

>>> for key, value in D.iteritems():   # 方法五  

    print key, '=>', value  

      

y => 2  

x => 1  

z => 3 

Note:用D.iteritems(), D.iterkeys()的方法要比没有iter的快的多。

四、字典的常用用途之一代替switch

在C/C++/Java语言中,有个很方便的函数switch,比如:

public class test {  

      

    public static void main(String[] args) {  

        String s = "C";  

        switch (s){  

        case "A":   

            System.out.println("A");  

            break;  

        case "B":  

            System.out.println("B");  

            break;  

        case "C":  

            System.out.println("C");  

            break;  

        default:  

            System.out.println("D");  

        }  

    }  

} 

在Python中要实现同样的功能,
方法一,就是用if, else语句来实现,比如:

from __future__ import division  

  

def add(x, y):  

    return x + y  

  

def sub(x, y):  

    return x - y  

  

def mul(x, y):  

    return x * y  

  

def div(x, y):  

    return x / y  

  

def operator(x, y, sep='+'):  

    if   sep == '+': print add(x, y)  

    elif sep == '-': print sub(x, y)  

    elif sep == '*': print mul(x, y)  

    elif sep == '/': print div(x, y)  

    else: print 'Something Wrong'  

  

print __name__  

   

if __name__ == '__main__':  

    x = int(raw_input("Enter the 1st number: "))  

    y = int(raw_input("Enter the 2nd number: "))  

    s = raw_input("Enter operation here(+ - * /): ")  

    operator(x, y, s) 

方法二,用字典来巧妙实现同样的switch的功能,比如:

#coding=gbk  

  

from __future__ import division  

  

x = int(raw_input("Enter the 1st number: "))  

y = int(raw_input("Enter the 2nd number: "))  

  

def operator(o):  

    dict_oper = {  

        '+': lambda x, y: x + y,  

        '-': lambda x, y: x - y,  

        '*': lambda x, y: x * y,  

        '/': lambda x, y: x / y}  

    return dict_oper.get(o)(x, y)  

   

if __name__ == '__main__':    

    o = raw_input("Enter operation here(+ - * /): ")  

    print operator(o) 
Python 相关文章推荐
python实现读取大文件并逐行写入另外一个文件
Apr 19 Python
python字符串string的内置方法实例详解
May 14 Python
使用TensorFlow实现SVM
Sep 06 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
用Python写一个模拟qq聊天小程序的代码实例
Mar 06 Python
浅谈django url请求与数据库连接池的共享问题
Aug 29 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
Python和Sublime整合过程图示
Dec 25 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 Python
Python实现播放和录制声音的功能
Aug 12 Python
Python实现制作销售数据可视化看板详解
Nov 27 Python
python实现的文件同步服务器实例
Jun 02 #Python
Python中for循环控制语句用法实例
Jun 02 #Python
python获取目录下所有文件的方法
Jun 01 #Python
Python常用小技巧总结
Jun 01 #Python
Python获取运行目录与当前脚本目录的方法
Jun 01 #Python
Python运算符重载用法实例分析
Jun 01 #Python
python使用Image处理图片常用技巧分析
Jun 01 #Python
You might like
php中session使用示例
2014/03/29 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
js模拟类继承小例子
2010/07/17 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python查询mysql中文乱码问题
2014/11/09 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
C#的几个面试问题
2016/05/22 面试题
护士自荐信怎么写
2013/10/18 职场文书
解除劳动合同协议书
2014/09/17 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
浅谈Redis中的RDB快照
2021/06/29 Redis
Python办公自动化解决world文件批量转换
2021/09/15 Python
GPU服务器的多用户配置方法
2022/07/07 Servers
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis