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的正则表达式re模块的常用方法
Mar 09 Python
pycharm 使用心得(六)进行简单的数据库管理
Jun 06 Python
python命令行参数解析OptionParser类用法实例
Oct 09 Python
Python中列表list以及list与数组array的相互转换实现方法
Sep 22 Python
浅谈python jieba分词模块的基本用法
Nov 09 Python
Python SQLite3简介
Feb 22 Python
儿童python练习实例
May 27 Python
Python中 Global和Nonlocal的用法详解
Jan 20 Python
python如何求数组连续最大和的示例代码
Feb 04 Python
Python中os模块功能与用法详解
Feb 26 Python
Python Selenium截图功能实现代码
Apr 26 Python
Python制作一个随机抽奖小工具的实现
Jul 07 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
Zend 输出产生XML解析错误
2009/03/03 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
怎么在Windows系统中搭建php环境
2013/08/31 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
PHP查询分页的实现代码
2017/06/09 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
Python黑魔法@property装饰器的使用技巧解析
2016/06/16 Python
全面分析Python的优点和缺点
2018/02/07 Python
tensorflow 查看梯度方式
2020/02/04 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
中医药大学毕业生自荐信
2013/11/08 职场文书
大专毕业生求职信
2014/07/05 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏