Python Day 5 基础数据类型(字典)

Python Day 5

版本区分:

字典在python3.5包含3.5之前都是无序,但是3.6之后是有序的。

可迭代:

  可以被for循环依次取到数值

数据类型的分类

  可变(不可哈希hash):list,dict,set     list = [111,222,333] (内容可变,hash不固定)

  不可变(可哈希hash):str,turple,int,bool name = 'alex'     (内容不可变,hash值是固定值)

  容器类:

    容器类的数据类型: list,tuple,dict  l1 = [l1,True,'alex']

    非容器类的数据类型:str,int,bool s1 = '[11,22,33]'

字典

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

以{key:value} 形式,(映射)存储的大量的关系型数据,二分法查询数据,查询速度非常快。

key 键 : 唯一 必须是不可变的可哈希的数据类型。

value 值 :可以是任意数据类型。

查: 三种方法

字典的键通过hash表转换成数字,采用二分查找查询数字。

1、key查询方法(直接查询) dic['key']   注意:此方法查询key不存在时,会直接报错

dic = {'name':'ck','age':18}

print(dic['name'])

2、get查询   dic.get('key') ,查询key不存在时默认返回None,可以自定义失败返回内容 (推荐使用)

dic = {'name':'ck','age':18}

print(dic.get('name'))

=============
dic = {'name':'ck','age':18}

print(dic.get('name1','key不存在'))

3、for循环查询。直接循环遍历dic 效果等同于 dic.keys(),   dic.values(),   dic.items()  类似于list但不是list的类型。 list(查询到的结果)可以转列表 可以遍历 没有索引

for key in dic.keys():
    print(key)

for value in dic.values():
    print(value)

for k,v in dic.items(): # [('name', '老男孩'), ('age', 56), ('hobby', 'women')]
    print(k,v)
分别赋值概念
a, b = 1, 2
a, b = ('alex', '34')
a, b = ['alex', '34']
有 如下 a = 1 b = 3,用一行代码将a b值互换。
a = 1
b = 3
a, b = b, a

 

增:两种方法

1、直接赋值 dic['socre'] = 100  ,(已存在key时,会覆盖值内容。同修改方法)

dic = {'name':'ck','age':18}
dic['socre'] = 100
print(dic)

2、dic.setdefault()  

dic = {'name':'ck','age':18}
dic.setdefault('sex')         #可以只添加值
dic.setdefault('sex','man')   #添加key:value  ,当key存在时,不论value是否存在,不进行任何操作
print(dic)

改:两种方法

1、赋值操作。 dic['name'] = cktest (当key存在时,赋值会覆盖原value,同增加方法。) 

dic = {'name':'ck','age':18}
dic['name'] = 'cktest'
print(dic)

2、update。前提需要两个字典。 对照字典中所有键值对 覆盖添加目标字典中,对照字典不变。

dic = {'name':'ck','age':18}
dic2 = {'sex':'man','age':'19'}
dic.update(dic2)  #对dic字典与dic2进行比较更新,将dic2中的添加到dic中,将共有的key对应的value更新为dic2内容。dic2不变,只作为供应。
print(dic)

删:四种方法

1、pop 有返回值 返回值为删除的值。

dic = {'name':'ck','age':18}
print(dic.pop('name'))
print(dic)
============
ck
{'age': 18}

2、popitem    dic.popitem()   随机删除(由于字典在python3.5包含3.5之前都是无序,但是3.6之后是有序的。使用3.6版本删除会删除最后的) 有返回值,返回值为元组,里面是删除的键值对。

dic = {'name':'ck','age':18}
print(dic.popitem())
print(dic)

=============
('age', 18)
{'name': 'ck'}

3、clear   dic.clear()  清空字典。

dic = {'name':'ck','age':18}
dic.clear()
print(dic)
结果:
{}

4、del 

1.内存删除(删除整个字典)
dic = {'name':'ck','age':18}
del dic
2.按照键,删除键值对 没有会报错
dic = {'name':'ck','age':18}
del dic['name']
print(dic)

fromkeys() 快速创建字典,以第一位作为键,第二位作为值,可迭代创建

a = fromkeys('abc','a')

 

字典嵌套

同列表嵌套相似,都是通过索引找到对应的值,对值进行操作。

dic = {
    'name_list': ['碗蓉', '俊俊', '爽妹'],
    'status': None,
    'personal_msg': {
        'name': '反面教材',
        'age': 25,
        'hobby_list':['抽烟', '喝酒', '烫头'],
    }
}
# 1,给dic添加一个键值对,学校:老男孩
dic["学校"] = "老男孩"
# 2,将status对应的值改成True
dic['status'] = True
# 3,给name_list对应的列表追加一个元素:平平
dic['name_list'].append('平平')
# 4,给personal_msg对应的字典添加一个键值对sex:男
dic['personal_msg']['sex'] = ''
# 5,将hobby_list 对应的列表中的烫头改成唱歌。
dic['personal_msg']['hobby_list'][-1] = '唱歌'
print(dic)

 

posted @ 2018-05-03 16:36  eailoo  阅读(184)  评论(0)    收藏  举报