Python字典创建 遍历 添加等实用基础操作技巧


Posted in Python onSeptember 13, 2018

字段是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 相关文章推荐
Ubuntu下安装PyV8
Mar 13 Python
Python 登录网站详解及实例
Apr 11 Python
老生常谈Python之装饰器、迭代器和生成器
Jul 26 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
python3转换code128条形码的方法
Apr 17 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
Python 下载及安装详细步骤
Nov 04 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
Python 实现进度条的六种方式
Jan 06 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 28 Python
python单例模式获取IP代理的方法详解
Sep 13 #Python
如何利用python制作时间戳转换工具详解
Sep 12 #Python
Python get获取页面cookie代码实例
Sep 12 #Python
python读取和保存图片5种方法对比
Sep 12 #Python
python3 拼接字符串的7种方法
Sep 12 #Python
python简单操作excle的方法
Sep 12 #Python
使用python实现快速搭建简易的FTP服务器
Sep 12 #Python
You might like
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
电大自我鉴定范文
2013/10/01 职场文书
领导的自我鉴定
2013/12/28 职场文书
军训自我鉴定怎么写
2014/02/13 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
银行职员自我鉴定
2014/04/20 职场文书
员工薪酬激励方案
2014/06/13 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
蓬莱阁导游词
2015/02/04 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
详解盒子端CSS动画性能提升
2021/05/24 HTML / CSS
css样式important规则的正确使用方式
2022/06/10 HTML / CSS