可变对象,字典

一、可变对象
1、每个对象中都保存了三个数据:
(1)id (标识)
(2)type(类型)
(3)value(值)
2、列表就是一个可变对象
a = [ 1 , 2 , 3 ]
3、a[0] = 10(改对象)
(1)这个操作是在通过变量去修改对象的值
(2)这种操作不会改变变量所指向的对象
(3)当修改对象时,如果有其他变量也指向了该对象,则修改也会在其他变量中体现

# 可变对象
a = [1,2,3]
print ('修改前:',a,id(a))

# 通过索引修改列表
a[0] = 10
print ('修改后:',a,id(a))

# 为变量重新赋值
a = [4,5,6]
print ('修改后:',a,id(a))

4、a = [ 4 , 5 , 6 ] (改变量)
(1)这个操作是在给变量重新赋值
(2)这种操作会改变变量所指向的对象
(3)为一个变量重新赋值,不会影响其他的变量。

a = [1,2,3]
b = a 
b[0] = 10     # a也改变了
b = [10,2,3     # a不改变
print ('a',a,id(a))
print ('b',b,id(b))

5、一般只有在为变量赋值时才是修改变量,其余的都是修改对象
6、== != is is not
(1)== 、 !=比较的是对象的值是否相等
(2)is 、 is not 比较的是对象的id是否相等(比较两个对象是否是同一个对象)

a = [1,2,3]
b = [1,2,3]
print (a,b)
print (id(a),id(b))
print (a == b)   # a 和 b的值相等,使用==会返回True
print (a is b)   # a 和 b不是同一个对象,内存地址不同,使用is会返回False

二、字典(dict)
1、基本概念
(1)字典属于一种新的数据结构,称为映射(mapping)
(2)字典的作用和列表类似,都是用来存储对象的容器
(3)列表存储数据的性能很好,但是查询数据的性能很差
(4)在字典中每一个元素都有一个唯一的名字,通过这个唯一的名字可以快速的查找的指定的元素。
(5)在查询元素时,字典的效率时非常快的
(6)在字典中可以保存多个对象,每个对象都会有一个唯一的名字,这个唯一的名字我们称为键(key),这个对象,将其称为值( value ),所以字典,也成为键值对( key-value )结构,每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)
2、创建字典
(1)使用{}

# 字典
# 使用{}来创建字典
d = {}    # 创建了一个空字典

# 创建一个保护有数据的字典
# 语法:
# {key:value,key:value,key:value }
# 字典的值可以是任意对象
# 字典的键(key)可以是任意的不可变对象(int、str、bool、tuple...),但是一般都会使用str
# **字典的键是不能重复的,如果出现重复的,后边的就会替换到前边的键**
d = {'name':'肖战','age':'29','gender':'男'}
# print (d,type(d))

# 需要根据键来获取值
print (d['name'],d['age'],d['gender'])
# 如果使用了字典中不存在的键,会报错
# print (d['hello'])    KeyError: 'hello'

(2)使用dict()函数来创建字典

# 每一个参数都是一个键值对,参数名就是键,参数名就是值(这种方式创建的字典,key都是字符串)
d = dict(name = '肖战',age = 29,gender = '男')

# 也可以将一个包含有双值子序列的序列转换为字典
# 双值序列,序列中只有两个值,[1,2],('a',3),'ab'
# 子序列,如果序列中的元素也是序列,那么我们就称这个元素为子序列   
# [(1,2),(3,4)]
d = dict ([('name','肖战')('age',18)])
print (d,type(d))

3、len()获取字典中键值对的个数

d = dict ([('name','肖战')('age',18)])
print (len(d))

4、in 检查字典中是否包含指代那个的键;
not in 检查字典中是否不包含指定的键

d = dict ([('name','肖战')('age',18)])
print ('hello' in d)

5、获取字典中的值,根据键来获取值
(1)语法 :d[key]

d = dict ([('name','肖战')('age',18)])
print (d['age'])

# 通过[]来获取值时,如果键不存在,会抛出异常KeyError
# get(key[,default])该方法用来根据键来获取字典中的值,如果获取的键在字典中不存在,会返回None
# 也可以指定一个默认值,来作为第二个参数,这样获取不到值时将会返回默认值
print (d.get('name'))
print (d.get('hello','默认值'))

6、修改字典

# (1)d[key]=value  如果key存在则覆盖,不存在则添加

d = dict ([('name','肖战')('age',18)])
d['name']='xiaozhan'    # 修改字典的key-value
d['address']='四川'     # 向字典中添加key-value

print (d)

# (2)setdefault(key[,default])可以用来向字典中添加key-value
#  如果key已经存在于字典中,则返回key的值,不会对字典做任何操作
#  如果key不存在,则向字典中添加这个key,并设置value
result = d.setdefault('name','肖战')
result = d.setdefault('name','王一博')
print ('result =',result)

# (3)update([other])
# 将其他的字典中的key-value添加到当前字典中
# 如果有重复发key,则后边的会替换到当前的字典中
d1 = {'a':1,'b':2,'c':3}
d2 = {'d':4,'e':5,'f':6}
d.update(d2)
print(d)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值