python第七天,dict

Posted 。低调ヽ继续

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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}
>>> 

 


以上是关于python第七天,dict的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序第七天WXML语法之模板用法

七天学会Python基础-第七天2/3-装饰器

python第七天

python学习笔记:第七天(函数)

python第七天

第七天