python字典映射函数 python中如何用字典生成映射列表

Python其实很简单 第十章 字典与集合

前面介绍的列表和元组都是有序序列,而字典与集合属于无序序列,也就是说,不能通过索引来操作元素。

创新互联建站成都网站建设按需设计网站,是成都网站设计公司,为酒楼设计提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站营销推广热线:18982081108

10.1 字典

语法格式:

dictionary= {key1 : value1, key2 : value2, key3 : value3 ,...., key n : value n }

其中,dictionary是字典名称,key表示元素的键,value表示元素的值,键和值必须是成对的。

如:

dict1 = { 'abc': 123, 98.6: 37 }

dict1

{'abc': 123, 98.6: 37}

可以看出,键可以是字符串、数字或者元组,但必须是唯一的;而值可以是任何数据类型,也没有要求是唯一的。

1、创建字典的方法

方法一:同时给定键和值,即“关键字参数”形式。

dictionary=dict(key1=value1,key2=value2,.....,key n=value n)

注意:这里的key 必须符合Python标识符的命名规则。

例:

先使用“{}”创建字典:

dict1={1:'一',2:'二',3:'三',4:'四',5:'五'}

dict1

{1: '一', 2: '二', 3: '三', 4: '四', 5: '五'}

再通过“关键字参数”形式创建:

dict1=dict(1='一',2='二',3='三',4='四',5='五')

SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

创建不成功,原因在于key 不符合Python标识符的命名规则。前面已经介绍过,标识符不能用数字表示或者用数字打头。

现在对键如下修改:

dict1=dict(n1='一',n2='二',n3='三',n4='四',n5='五') #在数字前加了一个字符”n”

dict1

{'n1': '一', 'n2': '二', 'n3': '三', 'n4': '四', 'n5': '五'}

方法二 :使用已经存在的元组和列表通过映射函数创建字典。

格式:dictionary=dict(zip(tuplekey,listvalue))

例:

tuplekey=('n1','n2','n3','n4','n5') #键的序列采用元组

listvalue=['一','二','三','四','五'] #值的序列采用列表

dict1=dict(zip(tuplekey,listvalue))

dict1

{'n1': '一', 'n2': '二', 'n3': '三', 'n4': '四', 'n5': '五'}

注意:tuple(listname)函数可以将列表转换为元组,list(tuplename)函数可以将元组转换为列表。

2、通过键访问字典

直接获取键的相应元素的值

dict1['n2']

'二'

利用get()方法

dict1.get('n2')

'二'

get()方法也可以带参数,当要访问的键不存在时返回一个字符串。如:

dict1.get('n0','can't find!') #当要查找的键不存在,返回'can't find!'

"can't find!"

3、遍历字典

使用字典对象的items()方法可以获取字典的“键.值对”列表。

for item in dict1.items():

print(item)

('n1', '一')

('n2', '二')

('n3', '三')

('n4', '四')

('n5', '五')

也可以获取具体的每个元素的键和值,如:

for key,value in dict1.items():

print(key,'对应的是',value)

n1 对应的是 一

n2 对应的是 二

n3 对应的是 三

n4 对应的是 四

n5 对应的是 五

4、添加、修改和删除字典元素

使用下面的语句,若指定的键存在,就可以修改该元素的值;若指定的键不存在,则添加该元素。如:

dict1['n6']='六' # 键’n6’不存在,故添加该元素

dict1

{'n1': '一', 'n2': '二', 'n3': '三', 'n4': '四', 'n5': '五', 'n6': '六'}

dict1['n4']='肆' # 键’n4’存在,故修改该元素

dict1

{'n1': '一', 'n2': '二', 'n3': '三', 'n4': '肆', 'n5': '五', 'n6': '六'}

5、利用推导式建立字典

import random

dict1={i:random.randint(1,100) for i in range(5)}

# 生成元素的键为0到5整数,值为1到100之间的随机数

print(dict1)

运行结果:{0: 28, 1: 59, 2: 79, 3: 30, 4: 88}

10.2 集合

集合是数学中一个很重要的概念,集合具有确定性、互异性、无序性三个基本属性。在Python中,集合同样具有这三个基本属性,其中,确定性是指对象要么是集合的元素,要么不是集合的元素;互异性是指集合中的元素不能重复;无序性是指集合中的元素不分先后次序,可以随意更换位置。

1、集合的创建

直接使用“{}”创建

set1={'春','夏','秋','冬'}

set1

{'秋', '春', '冬', '夏'}

set2={3,2,1,4,5}

set2

{1, 2, 3, 4, 5}

利用已有的列表、元组创建集合

list1=['东','南','西','北']

set3=set(list1)

set3

{'南', '东', '北', '西'}

利用已有的集合建立一个“副本”

set3

{'南', '东', '北', '西'} #set3和set4的值一样

set4=set3

set4

{'南', '东', '北', '西'}

set4.add('中') #给set4添加元素

set4

{'西', '中', '东', '南', '北'} # 这个好理解

set3

{'西', '中', '东', '南', '北'} # 意想不到吧?Set3为什么会发生变化?

再看看简单变量的情况:

a=2

b=a #是不是与前面set4=set3相似

b+=1

b

3

a

2 #但a的值并没有发生改变

从上面集合set3、set4和简单变量a、b的值的变化情况对比,不难发现set3和set4是指向同一地址的对象,而变量a和变量b指向了不同地址,语句b=a是将a的值传递个b,并不是将a的地址传递给b。列表、元组、字典都和集合一样具有这样的性质。

所以,将set4称为set3的“副本”更为恰当。

2、添加和删除元素

set3

{'南', '东', '北', '西'}

set3.add('中') # 添加元素

set3

{'西', '中', '东', '南', '北'} # 集合内的元素是无序的,不要纠结次序的变化

set3.remove('中') # 删除元素

set3

{'西', '东', '南', '北'}

3、集合运算

集合运算包括交()、并(|)、差(-),和数学中的集合运算是一致的。

set3={'南', '东', '北', '西'}

set4={'西', '中', '东', '南', '北'}

set3 set4 #取set3和set4的交集

{'西', '南', '北', '东'}

set3 | set4 #取set3和set4的并集

{'中', '南', '北', '西', '东'}

set3 - set4 #取set3与set4的差,即set3比set4多出来的元素

set()

set4 -set3 #取set4与set3的差,即set4比set3多出来的元素

{'中'}

python 字典为什么这么快

因为字典是通过键来索引的,关联到相对的值,理论上他的查询复杂度是O(1)。

哈希表(也叫散列表),根据关键值对(Key-value)而直接进行访问的数据结构。它通过把key和value映射到表中一个位置来访问记录,这种查询速度非常快,更新也快。而这个映射函数叫做哈希函数,存放值的数组叫做哈希表。 哈希函数的实现方式决定了哈希表的搜索效率。

Python初学(十九)

“键值对”是组织数据的一种重要方式,广泛应用在Web系统中。键值对的基本思想是将“值”信息关联一个“键”信息,进而通过键信息查找对应值信息,这个过程叫映射。Python语言中通过字典类型实现映射。

Python语言中的字典使用大括号{}建立,每个元素是一个键值对,使用方式如下:

    {键1:值1, 键2:值2, ... , 键n:值n}

其中,键和值通过冒号连接,不同键值对通过逗号隔开。字典类型也具有和集合类似的性质,即键值对之间没有顺序且不能重复。 

列表类型采用元素顺序的位置进行索引。由于字典元素“键值对”中键是值的索引,因此,可以直接利用键值对关系索引元素。

字典中键值对的索引模式如下,采用中括号格式:

    值 = 字典变量[键]

print(d[‘201801’])    

输出的也就是: 小明

使用大括号可以创建字典。通过索引和赋值配合,可以向字典中增加元素。

字典是存储可变数量键值对的数据结构,键和值可以是任意数据类型,通过键索引值,并可以通过键修改值。

字典类型有一些通用的操作函数

dict()函数用于生成一个空字典,作用和{}一致

字典类型存在一些操作方法,使用语法形式是:

字典变量.方法名称(方法参数)

d.keys()返回字典中的所有键信息,返回结果是Python的一种内部数据类型dict_keys,专用于表示字典的键。如果希望更好的使用返回结果,可以将其转换为列表类型。

d.values()返回字典中的所有值信息,返回结果是Python的一种内部数据类型dict_values。如果希望更好的使用返回结果,也可以将其转换为列表类型。

d.items()返回字典中的所有键值对信息,返回结果是Python的一种内部数据类型dict_items。当然也可以转成列表类型   即: list(d.items())

d.get(key, default)根据键信息查找并返回值信息,如果key存在则返回相应值,否则返回默认值,第二个元素default可以省略,如果省略则默认值为空。  例如:  就拿上边的数组d  来说 d.get(‘201801’,“不存在”)   相当于一个if语句  如果key  201801 存在  就返回201801 values  不存在就返回   默认值  不存在

d.pop(key, default)根据键信息查找并取出值信息,如果key存在则返回相应值,否则返回默认值,第二个元素default可以省略,如果省略则默认值为空。相比d.get()方法,d.pop()在取出相应值后,将从字典中删除对应的键值对。  和d.get方法类似 

d.popitem()随机从字典中取出一个键值对,以元组(key,value)形式返回。取出后从字典中删除这个键值对。

d.clear()删除字典中所有键值对。

此外,如果希望删除字典中某一个元素,可以使用Python保留字del。   即: del  d[key]

字典类型也支持保留字in,用来判断一个键是否在字典中。如果在则返回True,否则返回False。

与其他组合类型一样,字典可以遍历循环对其元素进行遍历,基本语法结构如下:

for 变量名 in 字典名

语句块

for循环返回的变量名是字典的索引值。如果需要获得键对应的值,可以在语句块中通过get()方法获得。

以上就是本章的所有内容,感谢大家.

Python 学习的基础(持续更新中......)

为什么Python中没有Switch/Case语句

同于我用过的其它编程语言,Python 没有 switch / case 语句。为了实现它,我们可以使用字典映射:

这段代码类似于:

Python 代码通常比处理 case 的标准方法更为简短,也可以说它更难理解。当我初次使用 Python 时,感觉很奇怪并且心烦意乱。而随着时间的推移,在 switch 中使用字典的 key 来做标识符变得越来越习以为常。

函数的字典映射

在 Python 中字典映射也可以包含函数或者 lambda 表达式:

虽然 zero 和 one 中的代码很简单,但是很多 Python 程序使用这样的字典映射来调度复杂的流程。

类的调度方法

如果在一个类中,不确定要使用哪种方法,可以用一个调度方法在运行的时候来确定。

很灵活,对吧?

官方说明

官方文档的解释说,“用if... elif... elif... else序列很容易来实现 switch / case 语句”。而且可以使用函数字典映射和类的调度方法。

Python 字典(dic)操作

具体函数有 set(),pop(),update(),items(),keys(),values(),get(),setdefault()

python 字典操作

假设字典为 dics = {0:'a', 1:'b', 'c':3}

二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:

print dics.get('a')

print dics.get('Paul')

None

dict.get(key,default=None) 两个选项 一个 key 一个 default= None ----default可以是任何strings(字符)

2.从字典中取值,若找到则删除;当键不存在时,显示异常key error

[方法]  dics.pop('key')

3.给字典添加一个条目。如果不存在,就指定特定的值;若存在,就算了。

[方法] dic.setdefault(key, value)

4. update

a = {'a':1,'b':2}

a.update({'c':3})

a

{'a': 1,'c': 3,'b': 2}

a.update({'c':4})

a

{'a': 1,'c': 4,'b': 2}

dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。

有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,这时,set就派上用场了。

python字典的构成形式为

python字典的构成形式为:字典是Python语言中唯一的映射类型。

映射类型对象里哈希值(键,key)和悔樱闷指向的对象(值,value)是一对多的关系,通常被认为是可变的哈希表。

字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。

字典类型与序列类型的区别:

1、存取和访问数据的方式不同。

2、序列类型使用数字类型的键(从序列的开始按数值顺序索引)。

3、映射类型可以用其他对象类型作键(如:数字、字符串、元祖,一般用字符串作键),和序列类型的键不同,映射类型的键直接或间接的和存储数据值相关联。

4、映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排列的。

5、映射类型用键直接“映射”到值。

字典是Python中最强大的数据类型之一

使用字典的注意不能允许一键对应多个值;键必须是可哈希的。

len()返回字典的长度。

hash()返回对象的哈希值,可以用来判断一个对象能否用来作为字典的键。

dict()工厂函数,用来创建字典颂迹。


网页名称:python字典映射函数 python中如何用字典生成映射列表
本文链接:http://azwzsj.com/article/dochggi.html