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 相关文章推荐
一则python3的简单爬虫代码
May 26 Python
Python中Collection的使用小技巧
Aug 18 Python
利用python为运维人员写一个监控脚本
Mar 25 Python
Python使用progressbar模块实现的显示进度条功能
May 31 Python
python一键去抖音视频水印工具
Sep 14 Python
Python使用sorted对字典的key或value排序
Nov 15 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
在Python中表示一个对象的方法
Jun 25 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
Sep 03 Python
Django数据模型中on_delete使用详解
Nov 30 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 Python
Python何绘制带有背景色块的折线图
Apr 23 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中的unset究竟会不会释放内存
2013/07/18 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
深入理解javascript中defer的作用
2013/12/11 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
Python中if __name__ == "__main__"详细解释
2014/10/21 Python
Python之os操作方法(详解)
2017/06/15 Python
python学生信息管理系统
2018/03/13 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
基督教婚礼主持词
2014/03/14 职场文书
爱心活动计划书
2014/04/26 职场文书
安全负责人任命书
2014/06/06 职场文书
授权委托书
2014/09/17 职场文书
经营目标责任书
2015/05/08 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
django学习之ajax post传参的2种格式实例
2021/05/14 Python
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
Mysql事务索引知识汇总
2022/03/17 MySQL