python第七天,dict

  在python里边创建字典的方法有如下几种:

>>> dict1= dict(((‘F‘,70),(‘C‘,67),(‘h‘,104),(‘i‘,105),(‘s‘,115)))
>>> print(dict1)
{‘F‘: 70, ‘C‘: 67, ‘h‘: 104, ‘i‘: 105, ‘s‘: 115}
>>> dict1[‘C‘]
67
>>>
>>>
>>> dict2 = {‘F‘:70,‘C‘:67,‘h‘:104,‘i‘:105}
>>> dict2[‘C‘]
67
>>>
>>> a = dict(one=1,two=2,three=3)
>>> a
{‘one‘: 1, ‘two‘: 2, ‘three‘: 3}
>>> a[‘one‘]
1
>>>
>>> c = dict(zip([‘one‘,‘two‘,‘three‘],[1,2,3]))
>>> c
{‘one‘: 1, ‘two‘: 2, ‘three‘: 3}
>>>
>>> d = dict([(‘two‘,2),(‘one‘,1)])
>>> d
{‘two‘: 2, ‘one‘: 1}
>>> 

  也可以通过fromkeys(S[,v])来进行创建一个字典,其中S是键,v是值,是可选的。

# 通过键创建
>>> dict01 = dict.fromkeys((1,2,3))
>>> dict01
{1: None, 2: None, 3: None}
>>>
# 这里需要注意的是v这个值,不管你如何输入,他都会把这个地方的值看为一个,然后分别赋值给键
>>> dict02 = dict.fromkeys((1,2,3),(2,3,4))
>>> dict02
{1: (2, 3, 4), 2: (2, 3, 4), 3: (2, 3, 4)}
>>> 

  一般我们在使用的字典的时候,经常性会通过键来索引出它的值,例如

dict0={‘name‘:‘jerry‘,‘sex‘:‘girl‘,‘age‘:12}

#那么 我们通过键取值时经常会用到 dict[‘name‘]这种方法来进行取值,但是当我们所取的键并不存在该字典中,就会报错,比如:
print(dict0[‘phone‘])

Traceback (most recent call last):
  File "<pyshell#62>", line 1, in <module>
    dict0[‘phone‘]
KeyError: ‘phone‘

#那么我们如何可以避免这个问题,因为用这个返回给用户是一个不好的体验,我们想如果它不存在那么返回空,不报错,那我们就用到了get()方法。例如:
>>> dict0.get(‘phone‘)
>>>
>>> print(dict0.get(‘phone‘))
None
>>> 

  关于字典的清空,.clear()和直接用一个{}进行重置的优缺点

#假设我们有一个字典a
>>> a={‘name‘:‘jerry‘}
>>>
>>> b=a
>>>
>>> b
{‘name‘: ‘jerry‘}
>>>
>>> a={}
>>> a
{}
>>> b
{‘name‘: ‘jerry‘}
>>>
#从上边的例子不难看出,当我们清空a之后,但是b是可以访问到以前的值的,我们可以理解为,b中还依然存放这那些值的指针,#而a只不过是将之前那个值的指针更换为一个新的指针。所以为了彻底清空那个值我们可以通过下面这个方法来清空
>>> a = b
>>>
>>> a.clear()
>>>
>>> a
{}
>>> b
{}
>>> 

  关于.copy()和直接赋值的区别

#首先我们定义一个a
>>> a={‘name‘:‘jerry‘}
#利用copy给b赋值
>>> b=a.copy()
#利用常规方法给c赋值
>>> c=a
>>> a
{‘name‘: ‘jerry‘}
>>> b
{‘name‘: ‘jerry‘}
>>> c
{‘name‘: ‘jerry‘}
>>>
#从上边的打印可以看到他们三个全部一样,但是实际果真如此么?
#我们通过给b添加一个新的键值对来看一下
>>> b[‘age‘]=12
>>> a
{‘name‘: ‘jerry‘}
#a并没有改变
>>> b
{‘name‘: ‘jerry‘, ‘age‘: 12}
>>>
#那我们给c一个新的键值对看一下
>>> c[‘sex‘]=‘girl‘
>>> a
#a是变化的
{‘name‘: ‘jerry‘, ‘sex‘: ‘girl‘}
>>> c
{‘name‘: ‘jerry‘, ‘sex‘: ‘girl‘}
>>>
#我们通过 id()来获取下他们三个的内存地址
>>> id(a)
48909912
>>> id(b)
48924136
>>> id(c)
48909912
#从上边我们可以看出,a c的内存地址是一致的,
#而b是新开辟了一个内存空间,所以当我们更改b的时候a并没有发生变化,
#因为他们并不在一个内存空间,而c发生改变时a也会发生改变就不奇怪了
>>> 

  和列表一样,字典也提供了pop()来进行删除元素,例如

#删除指定键,并返回相应的值
>>> a
{‘name‘: ‘jerry‘, ‘sex‘: ‘girl‘}
>>> a.pop(‘sex‘)
‘girl‘
>>> a
{‘name‘: ‘jerry‘}
>>> 

#删除随机的一个键值对
>>> a
{‘name‘: ‘jerry‘, ‘sex‘: ‘girl‘}
>>>
>>> a.popitem()
(‘sex‘, ‘girl‘)
>>> a
{‘name‘: ‘jerry‘}
>>> 

  setdefault(S[,v]),随机一个位置插入,当没有给值的时候,会默认给一个None

>>> a
{‘name‘: ‘jerry‘}
>>> a.setdefault(‘小白‘)
>>> a
{‘name‘: ‘jerry‘, ‘小白‘: None}
>>> a.setdefault(‘sex‘,‘girl‘)
‘girl‘
>>>
>>> a
{‘name‘: ‘jerry‘, ‘小白‘: None, ‘sex‘: ‘girl‘}
>>> 

  update(dict),是利用一个字典来更新另一个字典。

>>> a
{‘name‘: ‘jerry‘, ‘小白‘: None, ‘sex‘: ‘girl‘}
>>>
>>> b={‘phone‘:123456}
>>> b
{‘phone‘: 123456}
#利用b字典来更新a这个字典
>>> a.update(b)
>>> a
{‘name‘: ‘jerry‘, ‘小白‘: None, ‘sex‘: ‘girl‘, ‘phone‘: 123456}
>>> 

原文地址:https://www.cnblogs.com/pengpengzhang/p/8643224.html

时间: 2024-11-20 19:45:14

python第七天,dict的相关文章

Python在七牛云平台的应用(二)图片瘦身

(一)七牛云平台的图片瘦身功能简介:(引用自官网) 针对jpeg.png格式图片 瘦身后分辨率不变,格式不变. 肉眼画质不变. 图片体积大幅减少,节省 CDN 流量 官网给的图片压缩率很高,官网给的「葡萄」图片瘦身在不改变分辨率和格式的情况下压缩率为65.49%,我自己测试了一张小图在后文中会有,原来的大小在「22kb」压缩后为「18kb」,据一般情况来看,压缩率虽然没有官网给的那么夸张,但是也能基本达到80%左右,所以这个压缩率还是很不错的. (二)需求分析 我们可以设想几个场景 『1:当你在

python第七天--字符串的方法与注释

capitalize()   把字符串的第一个字符改为大写 casefold()   把整个字符串的所有字符改为小写 center(width)   将字符串居中,并使用空格填充至长度width的新字符串 count(sub[,start[,end]])   返回sub在字符串里边出现的次数,start和end参数表示范围,可选. encode(encoding='utf-8', errors='strict')   以encoding指定的编码格式对字符串进行编码. endswith(sub[

python获取两个dict的不同

参数: dict1, dict2 需求:如果dict1和dict2中有不同的key,那么返回这个(key, dict1[key]):如果dict1和dict2中有相同的key,但是value不同,返回这个(key, dict1[key]) 实现: def dict_different_data(first, second): """ get the different data bewtten two dicts objects return :result = first

一入python深似海--dict(字典)的一种实现

下面是python中字典的一种实现,用list数据结构实现字典.具体是这样的:[[(key1,value1),(key2,value2),...],[],[],...] 内部每一个hash地址是一个list,存放hash地址相同的(key,value)对. dict代码 def Map(num_buckets=256): """Initializes a Map with the given number of buckets.""" aMap

初学Python(七)——控制语句

初学Python(七)——控制语句 初学Python,主要整理一些学习到的知识点,这次是控制语句. if : #-*- coding:utf-8 -*- age=raw_input('input your age : ') print 'your age is ',age #因为输入的信息默认为string类型 #所以在计算时计算其ascii码的,要转换为int类型 if int(age)>=20: print 'adult' else: print 'teenager' if int(age)

深入学习python (七) 如何用python调用C/C++接口

python这门优美而以人为本的语言的人性化导致其开发效率的高,高的同时他牺牲了的程序运行效率,在项目开发的后期,可以通过对某些耗时的松耦合的单独的瓶颈模块进行C++重构,然后直接用python改调用C++写的模块即可. 看过了网上的一些例子,自己也来试一试: 首先是一个C++程序的代码,test.cpp如下: #include <iostream> char const* hello() { return "hello, world"; } void bye() { us

python入门14 字典dict

字典dict是无序的key:value格式的数据序列 #coding:utf-8 #/usr/bin/python """ 2018-11-11 dinghanhua 字典 """ '''dict 无序的key:value组合 key要是不可变类型,如数字.字符串.元组 key不可重复,重复的会被最后一个覆盖 ''' dict_id = {'1':'python','2':'java','3':'javascript','4':'go','2':

python学习第七天 -- dict 和set

今天主要学习关于python 的dict(全称dictionary)和set.dict的用法跟javascript 中map表类似,key + value结构语言.而set,准确来说,只是key的集合. Dict 直接贴代码 >>> d = {'zhangsan': 95, 'lixi': 75, 'wuliu': 85} >>> d['zhangsan'] 95 dict插入 >>>d['wangba'] = 90 //直接插入wangba该学员的成

Python入门(七) dict

Python中的dict也称作关联数组或者是哈希表,由键与值成对组成. 1. dict的创建:用{}括起来,键与值之间用:分割,每一个键值对之间用,分割 dict1 = {'name':'billy', 'age':28} print(dict1) >>> {'age': 28, 'name': 'billy'} 注意: 键必须独一无二,而且必须是不可变,如字符串.数字与tuple. 值可以取任意类型,可以随意修改. 2. 访问dict中的元素:通过键来访问 print(dict1['n