字典,函数

###########字典dict############

1.为什么需要字典类型?

>>> list1 = ["name", "age", "gender"]

>>> list2 = ["fentiao", 5, "male"]

>>> zip(list1, list2)        //通过zip内置函数将两个列表结合,help(zip)

[(‘name‘, ‘fentiao‘), (‘age‘, 5), (‘gender‘, ‘male‘)]

>>> list2[0]                //在直接编程时,并不能理解第一个索引表示姓名

‘fentiao‘

>>> list2[name]

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: list indices must be integers, not str

故字典是python中唯一的映射类型,key-value(哈希表),字典对象是可变的,但key必须用不可变对象。

2.字典的定义

In [8]: dic = {"name":"linux","age":22}    #######定义一个字典

In [10]: dic["name"]     //根据key找出value值,不能通过索引寻找value值

Out[10]: ‘linux‘

In [11]: dic["age"]

Out[11]: 22

############################################################

In [12]: user = [‘westos‘,‘linux‘]   ##########定义列表

In [13]: passwd=[‘redhat‘,‘blue‘]

In [14]: zip(user,passwd)    //通过zip内置函数将两个列表结合,help(zip

Out[14]: [(‘westos‘, ‘redhat‘), (‘linux‘, ‘blue‘)]

""""""

""""""

In [15]: dic={‘westos‘:‘redhat‘,‘linux‘:‘blue‘}

In [16]: dic[‘westos‘]   //根据key找出value值

Out[16]: ‘redhat‘

In [17]: dic[‘westos‘] ==‘redhat‘   判断key对应的value值字典中知否存在?存在返回Ture

Out[17]: True

3.字典的添加:

In [18]: dic={‘westos‘:‘redhat‘,‘linux‘:‘blue‘}

In [19]: dic[‘xiaobai‘]=‘123‘   ####key值和value值都不一样,整个添加。

In [20]: dic

Out[20]: {‘linux‘: ‘blue‘, ‘westos‘: ‘redhat‘, ‘xiaobai‘: ‘123‘}

In [21]: dic[‘linux‘]=‘block‘  ########key值一样和value值都不一样;将key对应的value值更新。

In [22]: dic

Out[22]: {‘linux‘: ‘block‘, ‘westos‘: ‘redhat‘, ‘xiaobai‘: ‘123‘}

4.字典的常用命令

In [23]: dic={‘westos‘:‘redhat‘}

In [24]: dic1={‘linux‘:‘blue‘}

In [25]: dic.

dic.clear       dic.items       dic.pop         dic.viewitems

dic.copy        dic.iteritems   dic.popitem     dic.viewkeys

dic.fromkeys    dic.iterkeys    dic.setdefault  dic.viewvalues

dic.get         dic.itervalues  dic.update

dic.has_key     dic.keys        dic.values

In [25]: dic.update(dic1)###############添加更新,####key值和value值都不一样,整个添加

In [26]: dic

Out[26]: {‘linux‘: ‘blue‘, ‘westos‘: ‘redhat‘}

In [27]: dic={‘westos‘:‘redhat‘}

In [28]: dic1={‘westos‘:‘blue‘}

In [29]: dic.update(dic1) #### ######3key值一样和value值都不一样;将key对应的value值更新

In [30]: dic

Out[30]: {‘westos‘: ‘blue‘}

###########

因为字典是无序的,所以没有索引和切片。

###############################################################

In [31]: dic={‘westos‘:‘redhat‘,‘linux‘:‘blue‘}

In [32]: dic.pop(‘westos‘)   #######删除,必须加key值;

Out[32]: ‘redhat‘       #########弹出字典中key值为"westos"的元素并返回该key的元素

In [33]: dic

Out[33]: {‘linux‘: ‘blue‘}

In [35]: dic={‘westos‘:‘redhat‘,‘linux‘:‘blue‘}

In [36]: dic.popitem()    #######删除,不加key值,随机删除

Out[36]: (‘westos‘, ‘redhat‘)

In [37]: dic

Out[37]: {‘linux‘: ‘blue‘}

In [38]: dic.popitem()

Out[38]: (‘linux‘, ‘blue‘)

In [39]: dic

Out[39]: {}

In [40]: dic.popitem()  #######key值删除完了,再删会报错

---------------------------------------------------------------------------

KeyError                                  Traceback (most recent call last)

<ipython-input-40-b472158de449> in <module>()

----> 1 dic.popitem()

KeyError: ‘popitem(): dictionary is empty‘

>>> dic.clear()                //删除字典的所有元素

>>> dic

>>> del dic                    //删除整个字典

>>> dic

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

NameError: name ‘dic‘ is not defined

##########################################################

In [47]: dic={‘westos‘:‘redhat‘,‘linux‘:‘blue‘}

In [48]: dic.values()       ##########显示value值

Out[48]: [‘redhat‘, ‘blue‘]

In [49]: dic.keys()         ##########显示key值

Out[49]: [‘westos‘, ‘linux‘]

In [50]: dic.get("westos")  ############查看key值对应的value值(有)

Out[50]: ‘redhat‘

In [51]: dic.get("hello")############查看key值对应的value值(没有的情况下,返回值为none)

In [52]: print dic.get("hello")

None

In [53]: dic.has_key("hello")    ######查看key值存在否?不存在显示False

Out[53]: False

In [54]: dic.has_key("linux")    ######查看key值存在否?存在显示 True

Out[54]: True

>> ddict = {}.fromkeys((‘username‘,‘password‘),‘fentiao‘)

//字典中的key有相同的value值,默认为None

>>> ddict

{‘username‘: ‘fentiao‘, ‘password‘: ‘fentiao‘}

>>> ddict = {}.fromkeys((‘username‘,‘password‘),)

>>> ddict

{‘username‘: None, ‘password‘: None}

###################字典的去重功能##########

In [57]: dic.fromkeys(‘westos‘)

Out[57]: {‘e‘: None, ‘o‘: None, ‘s‘: None, ‘t‘: None, ‘w‘: None}

In [58]: dic.fromkeys(‘westos‘,‘hello‘)

Out[58]: {‘e‘: ‘hello‘, ‘o‘: ‘hello‘, ‘s‘: ‘hello‘, ‘t‘: ‘hello‘, ‘w‘: ‘hello‘}

In [59]: dic = {‘westos‘:‘redhat‘,‘westos‘:‘234‘}

In [60]: dic

Out[60]: {‘westos‘: ‘234‘}

###############访问字典的值:直接通过key访问,循环遍历字典的遍历##########

In [76]: dic = {1:‘a‘,2:‘2‘}

In [78]: for key in dic.keys(): ########## 建立函数dic.keys()

....:     print "key=%s" % key

....:

key=1

key=2

In [79]: for value in dic.values():########### 建立函数 dic.values()

....:     print "value=%s" % value

....:

value=a

value=2

In [81]: for key, value in dic.keys(), dic.values():##### 建立dic.keys()和 dic.values()函数

print "%s = %s" %(key,value)

....:

1 = 2

a = 2

In [83]: dic.items()

Out[83]: [(1, ‘a‘), (2, ‘2‘)]

In [86]: for k,v in dic.items():

print "%s = %s" %(k,v)

....:

1 = a

2 = 2

####################嵌套赋值###############################

In [92]: data = [‘fentiao‘,‘50‘,‘1000‘,(2017,12,31)]

In [93]: name,shares,juankuan,data = data

In [94]: print name,shares,juankuan,data

fentiao 50 1000 (2017, 12, 31)

"""""""""""""""""""""""""""""""""""""""""""""""""""""

In [97]: data = [‘fentiao‘,‘50‘,‘1000‘,(2017,12,31)]

In [98]: name,shares,juankuan,(year,month,day)= data

In [99]: print name,shares,juankuan,(year,month,day)

fentiao 50 1000 (2017, 12, 31)

In [100]: print year

2017

In [101]: print month

12

In [102]: print day

31

In [103]: data = [‘fentiao‘,‘50‘,‘1000‘,(2017,12,31)]

In [104]: name,_,_,_, = data  #####不想使用的数据key值用"_"代替。

In [105]: print name

fentiao

#######################################

习题1:

对列表li = [34,45,32,132,43,55,],排序,去除最大值,最小值,求平均值。

In [106]: li = [34,45,32,132,43,55,]

In [107]: li.sort()

In [108]: li

Out[108]: [32, 34, 43, 45, 55, 132]

In [109]: li.pop(0)

Out[109]: 32

In [110]: li.pop(len(li)-1)

Out[110]: 132

In [111]: li

Out[111]: [34, 43, 45, 55]

In [112]: sum(li)/len(li)

Out[112]: 44

习题2:

代码:四则运算:

from __future__ import division

number1 = input("num1=")

operate = raw_input("operate=")

number2 = input("num2=")

dic ={"+":number1+number2,"-":number1-number2,"*":number1*number2,"/":number1/number2}

if operate in dic.keys():

print dic[operate]

截图:

###############函数################

1.定义函数

def关键字,依次写出函数名、括号、括号中的参数和冒号 :

在缩进块中编写函数体,函数的返回值用 return 语句返回。

2.函数的用法:

(1)函数在执行过程中一旦遇到return,函数就执行完毕,并将结果返回。

def hello():

return ‘hello‘

print ‘fentiao‘

print hello()

截图:

(2)函数在执行过程中没有遇到return,返回值None

def hello():

print ‘hello‘

print hello()

截图:

(3)如果要定义一个什么也不做的空函数时,可以用pass语句,作为一个占符位,让代码运行起来。

截图:前后对比,了解pass的功能。

(4)函数的参数检查:

abs求x的绝对值:

代码1:

def myabs(x):

if isinstance(x,(int,float)):

print abs(x)

else:

print "请输入整形或浮点型"

myabs(123)

myabs("m‘")

截图:

代码2:

def myabs(x):

if not isinstance(x,(int,float)):

print "请输入整形或浮点型"

return abs(x)

print myabs(123)

print myabs("m‘")

截图:

(5)函数返回多个值,实质上是返回一个元组tuple,返回时元组可以省略括号。

题目:定义一个函数func,传入两个数字,返回两个数字的最大值与平均值。

代码:

def func(x,y):

if not isinstance(x,int) or not isinstance(y,int):

print "type error"

avg = sum((x,y))/2

maxnum = max(x,y)

return "平均值:[%d]\n最大值:[%d]" %(avg,maxnum)

print func(2,10)

a截图:

b截图:验证返回值是一个元组tuple

(6)函数调用接受返回值时,按照位置赋值给变量。

代码:

ef func(x,y):

if not isinstance(x,int) or not isinstance(y,int):

print "type error"

avg = sum((x,y))/2

maxnum = max(x,y)

return (avg,maxnum)

myavg,mymax= func(2,10)

print mymax,myavg

截图:对比两张图,了解函数调用接受返回值时,按照位置赋值给变量。

3.参数:

参数定义的顺序:优先权力

必选参数>默认参数>可变参数>关键字参数

#######**kwargs包装字典,关键字参数,kwargs接受的是字典

######*args包装元组 ,可变参数。args接受的是元组

(1)默认参数,必选参数同时在函数中存在时,一定要必选参数放到前面。

(2)设置默认参数时,把变化大的参数放到前面,变化小的参数放后面,变化小的参数可以设置为默认参数。

引入问题:x的平方到x的n次方:

截图:

注意:当定义power时n=2放到x之前会报错,

原因是:默认参数,必选参数同时在函数中存在时,一定要必选参数放到前面。x是必选参数

截图:

练习1:

代码:

def yunwei(name,age=22,school="西安邮电"):

print ‘name:‘ +name

print ‘age: %d‘ %age

print ‘school:‘ + school

print   yunwei(‘xiaobai‘)

print  yunwei("xiaohuang" ,18,"西安财经")

截图:

练习2:

截图:

默认参数必须是不可变数据类型:

代码1:

def fun(li=None):

if li is None:

return[‘END‘]

li.append(‘END‘)

return li

print fun([1,2,3])

print fun()

截图:

代码2:

def fun1(li=[]):

if len(li) ==0:

return[‘END‘]

li.append(‘END‘)

return li

print fun1([2,3,4])

print fun1()

截图:

(3)可变参数

代码:

def fun (*args):

print type(args)

return max(args),min(args)

li = 1,43,23,12,2,7

print fun (*li)

截图:

(4)关键字参数

代码1:

def yunwei(name,age=22,**kwargs):

print ‘name:‘ +name

print ‘age: %d‘ %age

for k,w in kwargs.items():

print ‘%s :%s‘%(k,w)

print type (kwargs)

yunwei("fentiao")

yunwei("xiaobao" ,school= "youdian")

截图:

代码2:

def yunwei(name,age=22,**kwargs):

print ‘name:‘ +name

print ‘age: %d‘ %age

for k,w in kwargs.items():

print ‘%s :%s‘%(k,w)

print type (kwargs)

dic ={"school":"邮电","adresss":"西安"}

print yunwei("fentiao" ,**dic)

截图:

时间: 2024-10-24 11:12:41

字典,函数的相关文章

【Python基础】字典函数fromkeys()

字典函数fromkeys() fromkeys()的用法: 用于创建并返回一个新的字典.两个参数:第一个是字典的键,第二个(可选)是传入键的值,默认为None. 第一个值可以是字符串.列表.元祖.字典 实例一: #列表 >>> dict1 = dict.fromkeys([1,2,3]) >>> dict1 {1: None, 2: None, 3: None} #元组 >>> dict1 = dict.fromkeys((1,2,3)) >&g

元组&amp;字典&amp;函数基础

set: 类似dict, 是一组key的集合,不存储value 本质:无序和无重复元素的集合 创建: 创建set需要一个list或者tuple或者dict作为输入集合 重复元素在set中会自动被过滤 s1 = set([1,2,3,4,5,3,4,5,6]) 值为 {1,2,3,4,5,6} s2 = set((1,2,3,4,5,1,2,3)) 值为 {1,2,3,4,5} 添加 s4 = set([1,2,3,4,5]) s4.add(6) s4.add(4) 可以添加重复的 但是没有效果

Python字典函数

方法名字 操作 dict.cleara() 删除字典中所有元素 dict.copya() 返回字典(浅复制)的一个副本 dict.fromkeysc(seq, val=None) c 创建并返回一个新字典,以seq 中的元素做该字典的键,val 做该字 典中所有键对应的初始值(如果不提供此值,则默认为None) dict.get(key, default=None)a 对字典dict 中的键key,返回它对应的值value,如果字典中不存在此 键,则返回default 的值(注意,参数defau

对比多层字典是否相同函数

现有2个字典且是多层级的,找出2个字典的不同且输出,实现如下: ok_req={ "version": "9.0.0", "is_test": True, "store": "", "urs": "", "device": { "os": "android", "imei": "

Python中内置函数的介绍

内置函数的功能介绍 常用内置函数如下: 1.abs() 绝对值 格式:abs(x) 例如:print(abs(-18)) >>> 18 返回值:number #该函数主要用于数值类的操作 2.all() 是否都为真 格式:all(iterable) 例如:print(all([1,2,3,])) >>> Ture 返回值:bool #该函数主要用于可迭代对象的操作,主要为列表.元祖.字典和集合.当这些类型的元素中有空字符串.空列表.空元祖.空字典.空集合时,则返回值为F

python笔记5:装饰器、内置函数、json

装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1) print('run....') 现有一个新的需求,希望可以记录下函数的运行时间,需要在代码中计算时间的代码: def run(): start_time = time.time() time.sleep(1) print('run....') end_time = time.time() pr

Python经常使用内置函数介绍【filter,map,reduce,apply,zip】

Python是一门非常简洁,非常优雅的语言,其非常多内置函数结合起来使用,能够使用非常少的代码来实现非常多复杂的功能,假设相同的功能要让C/C++/Java来实现的话,可能会头大,事实上Python是将复杂的数据结构隐藏在内置函数中,用C语言来实现,所以仅仅要写出自己的业务逻辑Python会自己主动得出你想要的结果.这方面的内置函数主要有,filter,map,reduce,apply,结合匿名函数,列表解析一起使用,功能更加强大.使用内置函数最显而易见的优点是: 1. 速度快,使用内置函数,比

Python学习笔记六:列表、元组、字典

学习其他语言很少关注数组是的结构是怎么回事,都是直接使用.Python定义了列表.元组.字典三种数据结构,是我们使用python的基础,因此有必要理解它们的含义,我想这个和python一切皆对象的思想有关.python的数据结构更加灵活. 1. 列表[lists] 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片,加

自动化运维Python系列(三)之基础函数和文件操作

函数作用 增强代码的重用性和可读性 在没有使用函数编程之前,我们可能一直遵循的都是面向过程编程,即根据业务逻辑从上到下实现各个功能,这样的做的坏处是代码可读性不强,大量冗余代码,而且执行效率不高:有了函数后,我们就可以将多次使用到的相同代码模块放在单独的函数定义中,在任何想要调用它的地方随时调用,这就叫做函数式编程. 面向对象编程其实就是对函数进行再分类和封装,让开发"更快更好更强..." 函数的定义 def 函数名(参数): ... 函数体 ... 返回值 函数的定义主要有如下要点:

五、python函数、装饰器、内置函数、json及模块

一.递归调用 1.一个函数自己调用自己就是递归调用,最多一个函数递归调用自己999次,超过就会出错2.递归必须有一个明确的结束条件3.每次进入更深一层递归时,问题规模相比上次递归都应有所减少4.递归效率不高,少用递归 eg:def test1(): num = int(input('please enter a number:')) if num%2==0:#判断输入的数字是不是偶数 return True #如果是偶数的话,程序就退出了,返回true print('不是偶数请重新输入!') r