参考学习文章:
https://github.com/datawhalechina/team-learning-program/blob/master/PythonLanguage/09.%20%E5%AD%97%E5%85%B8.md
一、字典
序列是以连续的整数为索引,以“关键字”为索引、关键字可以是任意不可变类型
字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型
数据类型
- 可变类型
- 不可变类型
可以用id(x)函数或者是hash(x)判断一个数据类型x是不是可变类型
id(x):x进行操作,id前后不一致,x不可变;一致的话,x可变
hash(x):可哈希,不可变;不可哈希,可变
i=1
print(id(i))
i = i + 2
print(id(i))
hash(i)
#i可哈希,不可变
hash(i),hash(1),hash('abc'),hash((1,2,3))
hash([1,2,3])
- 数值、字符和元组 都能被哈希,因此它们是不可变类型。
- 列表、集合、字典不能被哈希,因此它是可变类型。
字典
无序键:值key:value对,键相互不同
dic1 = {1: 'one', 2: 'two', 3: 'three'}
dic=dict() # 空字典
dic['a']=1
#创建新字典dict.fromkeys(seq[, value]),以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值
seq = ('name', 'age', 'sex')
dic3 = dict.fromkeys(seq, ('小马', '8', '男'))
键只能为字符串类型,并且创建的时候字符串不能加引号,加上就会直接报语法错误。
dic = dict(name='Tom', age=10)
print(dic) # {'name': 'Tom', 'age': 10}
#dict.keys()返回一个可迭代对象,可以使用 list() 来转换为列表,列表为字典中的所有键;
#dict.values()返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有值
dic = {'Name': 'lsgogroup', 'Age': 7}
print(dic.keys()) # dict_keys(['Name', 'Age'])
lst = list(dic.keys()) # 转换为列表
print(lst) # ['Name', 'Age']
print(list(dic.values()))
#dict.items()以列表返回可遍历的 (键, 值) 元组数组
print(list(dic.items()))
#dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回默认值。
dic = {'Name': 'Lsgogroup', 'Age': 27}
print("Age 值为 : %s" % dic.get('Age')) # Age 值为 : 27
#dict.setdefault(key, default=None)和get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。
print("Age 键的值为 : %s" % dic.setdefault('Age', None)) # Age 键的值为 : 7
#key in dict in
if 'Age' in dic:
pass
if 'Age' not in dic:
pass
#dict.pop(key[,default]),del dict[key],dict.popitem(),dict.clear(),dict.copy(),dict.update()
#直接赋值和 copy 的区别:直接赋值是引用对象,dict.copy()浅拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
练习
1.
dic = {'python': 95,'java': 99,'c': 100}
#字典的长度是多少
j=0
for i in dic:
j+=1
print("字典的长度是:",j)
dic['java']=98 # 修改'java' 这个key对应的value值为98
del dic['c'] # 删除 c 这个keyc
dic['php']=90 # 增加一个key-value对,key值为 php, value是90
print(dic)
k=list(dic.keys()) # 获取所有的key值,存储在列表里
print(k)
v=list(dic.values()) # 获取所有的value值,存储在列表里
if 'javascript' in dic: # 判断 javascript 是否在字典中
print(' javascript 在字典中')
else:
print(' javascript 不在字典中')
#字典 dic1 = {'php': 97}, 将dic1的数据更新到dic中
dic1= {'php': 97}
dic.update(dic1)
print(dic)
在这里插入代码片