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 相关文章推荐
python实现的二叉树算法和kmp算法实例
Apr 25 Python
深入分析在Python模块顶层运行的代码引起的一个Bug
Jul 04 Python
python实现逆波兰计算表达式实例详解
May 06 Python
轻松理解Python 中的 descriptor
Sep 15 Python
pyqt5简介及安装方法介绍
Jan 31 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
详解python3 + Scrapy爬虫学习之创建项目
Apr 12 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
关于numpy.where()函数 返回值的解释
Dec 06 Python
python实现快递价格查询系统
Mar 03 Python
keras打印loss对权重的导数方式
Jun 10 Python
Python3使用Selenium获取session和token方法详解
Feb 16 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
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
IE下js调试工具Companion.JS
2010/10/15 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
vue改变循环遍历后的数据实例
2019/11/07 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
Python enumerate遍历数组示例应用
2008/09/06 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
Python中Numpy mat的使用详解
2019/05/24 Python
Django用户认证系统 User对象解析
2019/08/02 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
会计应届生的自荐信
2013/12/13 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
工作经历证明书范文
2014/11/02 职场文书
幼儿园六一主持词
2015/06/30 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
Python实现生成bmp图像的方法
2021/06/13 Python