dzh0394

0503Python基础-字典增删改查

1,昨日内容回顾

    列表

        增

            append 追加到最后

            insert 插入 (索引,内容)

            extend 迭代着追加

        删

            pop 按照索引删除,返回删除的元素

            remove 按照元素删除。

            clear 清空列表

            del

                在内存级别删除 del li

                按照索引删除 del li[1]

                切片删除可加步长 del li[1::2]

 

        改

            按照索引改 li[0] = 新内容

            按照切片去改 li[1:3] = \'老男孩\'

            按照切片去改 li[1:3] = [111, 222, [3,4,5]]

        查

            索引,切片,for循环。

    列表的嵌套

 

    元组

        只读列表,只能查询,不能增删改。

            儿子不能改,孙子可能改。

    range

        当成:自定制的数字范围列表

        与for循环结合,与len for循环结合。

        range(10)

        range(0,10,2)

        range(10,1,-1)

        补充:

        Python2x: range 数字列表

                  xrange 可迭代对象。

        python3x: range 可迭代对象。

3,字典

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

    dic = {\'name\':\'Laonanhai\',

            \'age\':45,

            \'name_list\':[\'反面教材\',\'俊俊\',....]

            }

    以key:value形式,映射,存储的大量的关系型数据。

    数据类型的分类:

        可变(不可哈希hash):list,dict,set, list = [11,222,333]

        不可变(可哈希hash):str,tuple,int,bool   name = \'alex\'

        容器类:

            容器类的数据类型:list,tuple,dict, l1 = [11,True,\'alex\',[22,33,44]]

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

    字典的key必须是不可变的数据类型,是唯一的,

        hash算法:

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

    字典的value可以是任意数据类型。

    字典的查询速度非常快,存储的大量的关系型数据。

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

4,字典的增删改查及其他操作

       键唯一,键必须是不可变得可哈希的数据类型

       dic = {\'name\': \'老男孩\', \'age\': 56, \'hobby\': \'women\'}

       增
dic[\'sex\'] = \'LaddyBoy\'
dic[\'name\'] = \'Alex\'  有则覆盖,没有就添加
dic.setdefault(\'sex\', \'Laddyboy\') 有则不变,无则添加。
dic.setdefault(\'name\', \'alex\')
print(dic)

 


print(dic.pop(\'age\'))  # 有返回值,返回的是键对应的值
print(dic.pop(\'age1\', \'没有此键...\'))
print(dic)

 

dic.clear() 清空字典
print(dic)

print(dic.popitem())  # 随机删除,有返回值,返回值为元组,里面是删除的键值对。
print(dic)

 


del
1,删除整个字典
del dic
2,按照键删除键值对
del dic[\'name\']
print(dic)


1, dic[\'name\'] = \'Alex\'  有则覆盖,没有就添加
update 两个字典的更新
dic = {"name": "jin", "age": 18, "sex": "male"}
dic2 = {"name": "alex", "weight": 75}
dic2.update(dic)  # 将dic里面的所有键值对 覆盖添加到dic2中,dic不变
print(dic)  # {\'name\': \'jin\', \'age\': 18, \'sex\': \'male\'}
print(dic2)  # {\'name\': \'jin\', \'weight\': 75, \'age\': 18, \'sex\': \'male\'}



1,dic[\'name\']
print(dic[\'name1\'])

2,dic.get(\'name\')
print(dic.get(\'name\'))
print(dic.get(\'name1\'))
print(dic.get(\'name1\', \'sb没有此键\'))

for循环查询
dic.keys(), dic.values(), dic.items()  #类似于list但不是list的类型。
print(dic.keys(),type(dic.keys()))
for key in dic.keys():
    print(key)
l_key = list(dic.keys())
print(l_key)

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

l_value = list(dic.values())
print(l_value)
print(dic.items())

 

分别赋值概念
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
print(dic.items())
for i in [22,33,44]:
    print(i)
for i in [(11,22),(33,44),(55,66)]:
    print(i)
k,v = (\'name\', \'老男孩\')
for k,v in dic.items(): # [(\'name\', \'老男孩\'), (\'age\', 56), (\'hobby\', \'women\')]
    print(k,v)

 

5,字典的嵌套


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对应的列表追加一个元素:平平
print(dic[\'name_list\'])
dic[\'name_list\'].append(\'平平\')
print(dic)
4,给personal_msg对应的字典添加一个键值对sex:男
dic2 = dic[\'personal_msg\']
dic2[\'sex\'] = \'男\'
print(dic)
dic[\'personal_msg\'][\'sex\'] = \'男\'
print(dic)
5,将hobby_list 对应的列表中的烫头改成唱歌。
dic[\'personal_msg\'][\'hobby_list\'][-1] = \'唱歌\'
print(dic)

 

分类:

技术点:

相关文章: