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 27 Python
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
Python中shape计算矩阵的方法示例
Apr 21 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 Python
Python使用re模块正则提取字符串中括号内的内容示例
Jun 01 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
详解Python字典的操作
Mar 04 Python
Python中最大递归深度值的探讨
Mar 05 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
浅谈keras保存模型中的save()和save_weights()区别
May 21 Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 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进行MySQL删除记录操作代码
2008/06/07 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
Python解释执行原理分析
2014/08/22 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
python批量图片处理简单示例
2019/08/06 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
应届生学校辅导员求职信
2013/11/07 职场文书
初二政治教学反思
2014/01/12 职场文书
高中生的自我评价
2014/03/04 职场文书
社区春季防火方案
2014/06/02 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
小学运动会宣传稿
2015/07/23 职场文书
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
如何用python清洗文件中的数据
2021/06/18 Python
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs