目录
字典 (dict)
1、增
2、删
3、改
4、查
字典 (dict)
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
1、增
dic = {
'name':'张三',
'age':20,
'sex': 'male',
}
dic['high'] = '185cm' #没有相同的key时,添加
print(dic)
dic['name'] = '李四' #有相同的key时,替换
print(dic)
# setdefault 在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖。
dic.setdefault('K') #只有键那对应的值是none
print(dic)
dic.setdefault('weight',50)
print(dic)
dic.setdefault('name','王五')#原字典中存在设置的键值对,不会更改或者覆盖
print(dic)
输出结果:
{'name': '张三', 'age': 20, 'sex': 'male', 'high': '185cm'}
{'name': '李四', 'age': 20, 'sex': 'male', 'high': '185cm'}
{'name': '李四', 'age': 20, 'sex': 'male', 'high': '185cm', 'K': None}
{'name': '李四', 'age': 20, 'sex': 'male', 'high': '185cm', 'K': None, 'weight': 50}
{'name': '李四', 'age': 20, 'sex': 'male', 'high': '185cm', 'K': None, 'weight': 50}
2、删
dic = {
'name':'张三',
'age':20,
'sex': 'male',
'v':'abc'
}
dic.pop('sex') #按键去删除,有返回值,可直接print打印
print(dic)
print(dic.pop('v'))
print(dic.pop('aaa',None)) #按键去删除,如果没有此键,可设置返回值,不设置返回值直接打印会报错
输出结果:
{'name': '张三', 'age': 20, 'v': 'abc'}
abc
None
dic = {
'name':'张三',
'age':20,
'sex': 'male',
'v':'abc'
}
dic.popitem() #python3.5之前版本随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回,python3.6删除最后一个键值对
print(dic)
print(dic.popitem()) #将删除的键值对以元祖的形式返回
输出结果:
{'name': '张三', 'age': 20, 'sex': 'male'}
('sex', 'male')
dic = {
'name':'张三',
'age':20,
'sex': 'male',
'v':'abc'
}
dic.clear() #清空字典
print(dic)
#del dic #删除字典
输出结果:{}
3、改
dic = {
'name':'张三',
'age':20,
'sex': 'male',
'v':'abc'
}
dic['name'] = '李四' #按键来修改值
print(dic)
输出结果:{'name': '李四', 'age': 20, 'sex': 'male', 'v': 'abc'}
dic = {"name":"张三","age":18,"sex":"male"}
dic2 = {"name":"李四","weight":75}
dic2.update(dic) # 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中
print(dic2)
输出结果:{'name': '张三', 'weight': 75, 'age': 18, 'sex': 'male'}
4、查
dic = {'age':18,'name':'liu','sex':'male'}
print(dic.keys()) #字典的键值对 以列表形式输出 但是类型是键值对型
结果:dict_keys(['age', 'name', 'sex'])
print(dic.values()) #字典的值 以列表形式输出 但是类型是键值对型
结果:dict_values([18, 'liu', 'male'])
print(dic.items()) #字典的键值对 以元祖形式输出 但是类型是键值对型
结果:dict_items([('age', 18), ('name', 'liu'), ('sex', 'male')])
for i in dic: #默认打印出键值,后面跟.value可以打印出数值,后面跟.items可以打印键值对
print(i)
结果:age
name
sex
print(dic.get('age')) #根据键找对应的数值,不报错 可以自定义值 默认返回 none
结果:18