5,字典,(字典的嵌套)

字典

基础数据类型之一,{} 以键值对的形式存储数据。

***

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,分别以字典的形式迭代添加到最后。






posted @ 2018-05-03 15:43  Mr~Zhang  阅读(1137)  评论(0编辑  收藏  举报