字典
基础数据类型之一,{} 以键值对的形式存储数据。
***
以key:value 形式,映射,存储的大量的关系型数据。
字典的key,必须是不可变的数据类型,是唯一的。
字典的value,可以是任意数据类型。
dic = {'name': '老男孩','age': 56,'hobby': 'women',}
print(dic.keys())
print(dic.values())
print(dic.items())
print(type(dic.values()))
print(type(dic.keys()))
print(type(dic.items()))
结果:
dict_keys(['hobby', 'name', 'age'])
dict_values(['women', '老男孩', 56])
dict_items([('hobby', 'women'), ('name', '老男孩'), ('age', 56)])
<class 'dict_values'>
<class 'dict_keys'>
<class 'dict_items'>
***
字典在python3.5(包含3.5)之前都是无序的。
但是在python3.6以后是有序的。
字典的查询速度非常快,存储着大量关系型数据。
字典的查询方式:
通过hash算法,字典的键通过hash表,转换成数字,采用的是二分查找查询数字。
***
数据类型的分类:
可变(不可哈希hash):list,dict,set,
不可变(可哈希hash):str,tuple,int,bool
***
容器类(3种)
list,dict,tuple,
非容器类(3种)
int,bool,set
***
字典:(增删改查)
增:
dic = {'name': '老男孩','age': 56,'hobby': 'women',} dic['name'] = 'hahah' #有责覆盖,无责添加。 print(dic)
答案:
{'age': 56, 'hobby': 'women', 'name': 'hahah'}
dic['aaa'] = 'ccc' #默认添加到最后
print(dic)
dic.setdefault('name1','老男孩1') #有责不变,无责添加。
print(dic)
删:
dic = {'name': '老男孩','age': 56,'hobby': 'women',} print(dic.pop('name')) #删除键值对(返回删除的‘值’)
print(dic.pop('aledd','没有此值')) #如果没有要删除的key,在字典里,责返回删除的value。没在字典里,则返回None
dic.clear() 清空字典
print(dic)
print(dic.popitem()) #随机删除,有返回值,返回值为元祖,里面是删除的键值对。
print(dic)
del dic #删除字典
print(dic)
del dic['name'] #按照键,删除键值对。
print(dic)
改:
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} dic['name'] = 'alex'# 有则覆盖,没有就添加 print(dic)
dic = {"name": "jin", "age": 18, "sex": "male"}
dic2 = {"name": "alex", "weight": 75}
dic2.update(dic) #将dic里面的所有键值对,覆盖添加到dic2中,dic不变。
print(dic)
print(dic2)
查:
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} print(dic['name']) #查看键 ,找不到会报错 print(dic.get('name1')) 查看键,找不到返回None print(dic.get('name1','没有此键值对'))#可自定义值返回的内容,有责返回值,无责返回自定义值。
for循环
dic.keys():键
dic.value():值
dic.items():循环键值对
dic = {'name': '老男孩','age': 56,'hobby': 'women',} for i in dic.keys():循环字典中的键 print(i) for i in dic.values():#循环字典中的值 print(i) for k,v in dic.items():#循环字典中的键值。 print(k,v)
分别赋值概念
a = 1
b = 3
a,b = b,a
print(a,b)
3 1
字典的嵌套
dic = { 'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': { 'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头'], } } # 1,给dic添加一个键值对,学校:老男孩 # dic['学校'] = '老男孩' # print(dic) # 2,将status对应的值改成True # dic['status'] = True # print(dic) # 3,给name_list对应的列表追加一个元素:平平 # dic['name_list'].append('平平') # print(dic) # 4,给personal_msg对应的字典添加一个键值对sex:男 # dic['personal_msg']['sex'] = '男' # print(dic) # 5,将hobby_list 对应的列表中的烫头改成唱歌。 # dic['personal_msg']['hobby_list'][2] = '唱歌' # print(dic)
dic = dict.fromkeys('abv',777)
将abv,分别以字典的形式迭代添加到最后。