Python中的字典

字段是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)
时间: 2024-11-05 14:40:32

Python中的字典的相关文章

Python中的字典详解

Python中的字典是python的一种数据结构,它的本质是key和value以及其对应关系的一种集合,一个key可以对应一个多个value.合理的使用字典能给我们编程带来很大的方便. -----python中的数据类型 -----python中的字符串操作 python3.0以上,print函数应为print(),不存在dict.iteritems()这个函数. 在python中写中文注释会报错,这时只要在头部加上# coding=gbk即可 #字典的添加.删除.修改操作dict = {"a&

Python中的字典及举例

字典 字典是python中的唯一的映射类型(哈希表) 字典对象是可变的,但是字典的键必须使用不可变对象,一个字典中可以使用不同类型的键值. 字典的方法 keys() values() items() 举例如下: In [10]: dic = {} In [11]: type(dic) Out[11]: dict In [12]: dic = {'a':1,1:123} In [13]: dic Out[13]: {1: 123, 'a': 1} In [14]: dic = {'a':1,1:1

python中的字典内置方法小结

#!/usr/local/bin/python3 # -*- coding:utf-8 -*- #key-value #dict 无序,无下标,不需要下标,因为有key stu={ 'stu001':"zhang yu", 'stu002':"ma hong yan", 'stu003':"zhang guo bin", 'stu004':"sha chun hua" } ''' -----------------------

python中的字典(dict)

首先说一下字典是什么: 字典是一种容器模型,可以通过搜索Key键获得其对应值得数据结构,字典可以储存任何类型的对象.字典里面的每个Key和value之间用冒号隔开.其键可以是字符串.数字.元组,字典是Python中唯一内置的映射类型. 注:键最好不要用浮点 字典所包含的方法如下表: 序号 方法 描述 1 clear(self) 删除字典里面的所有元素 2 copy(self) 返回值类型为字典,浅copy ,俗称赋值 3 fromkey(*args,**kwargs) 创建一个新字典,以序列se

Python中的字典排序

Python中比较常用的排序有两个函数, 一.定义 (1)一个是List数据结构中的sort >>> help(list.sort)Help on method_descriptor: sort(...) L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*; cmp(x, y) -> -1, 0, 1 The sort() method takes optional arguments for co

13.python中的字典

字典其实和之前的元祖和列表功能相似,都是用来储存一系列对象的.也就是一种可变容器,或者是我所比喻的革新派的菜单. 但也不是完全相同,我在之前曾经将字典称为特殊的'序列',是字典拥有序列的部分特性,但是又不符合序列的定义. 首先我们来看下字典是如何创建的: a = {'a':1,'b':2,'c':2} b = {} c = dict(a=1) print a print b print c 我们可以使用{} 或者dict() 来创建一个字典对象. 但字典里面写的是什么?下面我来分析一下. 首先,

python中的字典应用实例

字典中的键使用时必须满足一下两个条件: 1.每个键只能对应一个项,也就是说,一键对应多个值时不允许的(列表.元组和其他字典的容器对象除外).当有键发生冲突时(即字典键重复赋值),取最后的赋值. >>> myuniversity_dict = {'name':'yuanyuan', 'age':18, 'age':19, 'age':20, 'schoolname':Chengdu, 'schoolname':Xinxiang} Traceback (most recent call la

Python中的字典方法

1.clear clear方法清除字典中的所有项.无返回值 d = {'age' : 42, 'name':'Gumby'} d.clear()>>> d{} 2.copy copy方法返回一个具有相同键-值对的新字典 d = {'age' : 42, 'name' : 'Gumby'} b = d.copy()>>> b{'age' : 42, 'name' : 'Gumby'} 3.fromkeys fromkeys方法使用键值组成的序列创建新的字典,每个键值默认对

Python中使用字典的几个小技巧

1 解包 所谓解包,就是将字典通过 ** 操作符转为 Key=Value 的形式,这种形式可以直接传给函数作为关键字参数. 说说适用的几种情况. 1.1 搜索拼接条件 当应用中使用类似 SQLAlchemy 的 ORM 形式读取数据的时候,不同搜索条件,传入给 ORM 的搜索参数也随之改变. 下面是图书表的部分数据(只展示了部分字段) +----+---------------+-------------------------+-------+ | id | category_name | b