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实现豆瓣图片下载的方法
May 25 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
Jun 13 Python
numpy排序与集合运算用法示例
Dec 15 Python
pandas pivot_table() 按日期分多列数据的方法
Nov 16 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
Python基础之文件读取的讲解
Feb 16 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
Keras实现将两个模型连接到一起
May 23 Python
python使用selenium爬虫知乎的方法示例
Oct 28 Python
python爬虫用scrapy获取影片的实例分析
Nov 23 Python
python绘图模块之利用turtle画图
Feb 12 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
php中数字0和空值的区别分析
2014/06/05 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
Postman内建变量常用方法实例解析
2020/07/28 Javascript
Python中的魔法方法深入理解
2014/07/09 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
AJax面试题
2014/11/25 面试题
城市规划毕业生求职信
2013/10/10 职场文书
司机的工作范围及职责
2013/11/13 职场文书
咖啡馆创业计划书
2014/01/26 职场文书
初三政治教学反思
2014/01/30 职场文书
入职担保书范文
2014/05/21 职场文书
2015个人半年总结范文
2015/03/09 职场文书
党员转正党支部意见
2015/06/02 职场文书
学校运动会加油词
2015/07/18 职场文书
2016学习依法治国心得体会
2016/01/15 职场文书
创业计划之特色精品店
2019/08/12 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android