Python学习笔记-Day5

内容大纲:

一、字典介绍

二、字典的增、删、改、查

三、字典的三种特殊方法

四、字典的嵌套

五、补充:分别赋值

一、字典介绍

字典是python的基本数据类型之一,可以存储大量的关系型数据,也是python中唯一的映射类数据类型。

数据类型的分类:

可变的(不可哈希的):list、dict、集合

不可变的(可哈希的):int、str、bool、tuple

字典是以键值对(key-value)的形式存在,dict = { key: value , key : value,.......}

其中,字典的key必须是不可变的数据类型,字典的value可以是任意的数据类型

例如:

dic = {'name_list': ['王双', 'alex', '孙飞', 'taibai'],
       1: {'name': 'taibai', 'age': 18, 'sex': ''},
       (1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]
       }

二、字典的增、删、改、查

1、字典的增(两种方法)

(1)用key进行定位,用=进行重新赋值:字典中不存在这个key时,增加这个key到字典中,字典中本来就存在这个key时,就修改这个key对应的value。

dic = {'name':'helen','age':18,'sex':'women'}
dic['name'] = 'amy'  #字典中有这个key,会修改这个key对应的value
print(dic)

dic['habby'] = 'swimming'   #字典中没有这个key,会增加这个key到字典中
print(dic)


输出结果:
{'name': 'amy', 'age': 18, 'sex': 'women'}
{'name': 'amy', 'age': 18, 'sex': 'women', 'habby': 'swimming'}

(2)setdefault(key,value):字典中不存在这个key时,增加这个key到字典中;字典中原本就存在这个key时,不进行任何操作。value可以省略,默认添加None。

dic = {'name':'helen','age':18,'sex':'women'}
dic.setdefault('hobby','swiming')    #增加到字典中
print(dic)

输出结果:{'name': 'helen', 'age': 18, 'sex': 'women', 'hobby': 'swiming'}


dic = {'name':'helen','age':18,'sex':'women'}
dic.setdefault('hobby')        #增加到字典中,'hobby'对应的value值是None
print(dic)

输出结果:{'name': 'helen', 'age': 18, 'sex': 'women', 'hobby': None}


dic = {'name':'helen','age':18,'sex':'women'}
dic.setdefault('name','amy')     #不会修改原来的字典
print(dic)

输出结果:{'name': 'helen', 'age': 18, 'sex': 'women'}

2、字典的删(4种方法)

(1)pop(k,None):按照key进行删除键值对,返回值是被删除的key对应的value,可以设置第二参数,若没有设置第二参数,没有key时程序会报错。

ic = {'name':'helen','age':18,'sex':'women'}
dic.pop('name')   #按照key来删除name-helen
print(dic)

dic = {'name':'helen','age':18,'sex':'women'}
print(dic.pop('name'))   #返回被删除的key对应的value,结果是  helen

dic = {'name':'helen','age':18,'sex':'women'}
# dic.pop('hobby')   #程序会报错
dic.pop('hobby','没有这个数')    #程序不会报错
print(dic.pop('hobby','没有这个数'))   #结果是:没有这个数

(2)clear():请空

(3)popitem():在python3.6之前,是随机删除一个键值对;从python3.6开始,删除最后一个键值对

(4)del:

    ① 按照键删除,del dic['name']

              ② 从内存上清空 del dic

3、改(两种方法)

(1)通过键和=进行修改,与增的用法相同

(2)update():

          dic1.update(dic2):将dic2中的所有键值对覆盖并添加到dic1中(键相同的覆盖,键不同的添加)

  例如:

dic1 = {'name':'helen','age':18,'sex':'women'}
dic2 = {'name':'Amy','age':18,'bobby':'swimming'}
dic1.update(dic2)
print(dic1)

结果是:
{'name': 'Amy', 'age': 18, 'sex': 'women', 'bobby': 'swimming'}

4、查(2种方法)

(1)通过键进行查询(与列表通过索引进行查询相似)

dic = {'name':'helen','age':18,'sex':'women'}
str1 = dic['name']    #通过键查询到value
print(str1)

结果是:helen

(2)get(k,None):字典种有这个key的返回这个key对应的value,没有的话返回第二参数,第二参数可以不写,默认返回None

dic = {'name':'helen','age':18,'sex':'women'}
str1 = dic.get('name')
print(str1)          #有这个key,返回这个key对应的value值
str2 = dic.get('hobby')
print(str2)          #没有这个key,第二参数为空,返回None
str3 = dic.get('hobby','没有这个键')
print(str3)           #没有这个key,有第二参数,返回第二参数

三、字典的三种特殊使用方法(.keys()/.values()/.items())

1、dic.keys()

① 用于提取字典种的key值,返回值的类型是 dict_keys

② 提取字典中的key值,并将其转化为列表     list(dic.keys())

③ 与for结合使用:输出的就是字典里的key(按原来的数据类型)

dic = {'name':'helen','age':18,'sex':'women'}
print(dic.keys(),type(dic.keys()))   #使用①
li = list(dic.keys())
print(li)         #使用②
for i in dic.keys():     #使用③
    print(i)

输出结果是:
dict_keys(['name', 'age', 'sex']) <class 'dict_keys'>
['name', 'age', 'sex']
name
age
sex

2、dic.values()

① 用于提取字典种的value值,返回值的类型是 dict_values

② 提取字典中的value值,并将其转化为列表     list(dic.values())

③ 与for结合使用:输出的就是字典里的value(按原来的数据类型)

dic = {'name':'helen','age':18,'sex':'women'}
print(dic.values(),type(dic.values()))   #使用①
li = list(dic.values())
print(li)         #使用②
for i in dic.values():     #使用③
    print(i)

输出结果是:
dict_values(['helen', 18, 'women']) <class 'dict_values'>
['helen', 18, 'women']
helen
18
women

3、dic.items()

① 用于提取字典种的key和value值,并将key和它对应的value用元组包围起来,返回值的类型是 dict_items

② 提取字典中的key和value值,并将其转化为列表     list(dic.items()),其中key和它对应的value用元组包围起来[(key,value),(key,value),.....]

③ 与for结合使用:输出的就是字典里的key和value(按原来的数据类型)

    Ⅰ. for k,v in dic.items()  :输出原始格式的key和value

    Ⅱ. for i in dic.items()    :输出被元组包围的key和value

    Ⅲ. for i in dic()     :输出原始格式的key

dic = {'name':'helen','age':18,'sex':'women'}
print(dic.items(),type(dic.items()))   #使用①
#输出结果是:dict_items([('name', 'helen'), ('age', 18), ('sex', 'women')]) <class 'dict_items'>
li = list(dic.items())
print(li)           #使用②
#输出结果是:[('name', 'helen'), ('age', 18), ('sex', 'women')]
for k,v in dic.items():
    print(k,v)
#输出结果是:
# name helen
# age 18
# sex women
for i in dic.items():           
    print(i)   
# 输出的结果是:
# ('name', 'helen')
# ('age', 18)
# ('sex', 'women')
for i in dic:
    print(i)
# 输出结果是:
# name
# age
# sex

四、字典的嵌套

dic = {'name_list': ['王双', 'alex', '孙飞', 'taibai'],
       1: {'name': 'taibai', 'age': 18, 'sex': ''},
       (1,2): [100, {'ip': '192.168.1.1', 'port': 3306}]
       }
# 1,给 name_list对应的列表追加一个值: 司徒大人.
dic['name_list'].append('司徒大人')
print(dic)
# 2,将name_lsit对应的alex 变成全部大写.
dic['name_list'][1]=dic['name_list'][1].upper()
print(dic)
# 3, 将1对应的字典添加一个键值对: weight : 75
dic[1]['weight'] = 75
print(dic)
# 4,将1 对应的字典的name键对应的名字taibai 换成alex
dic[1]['name'] = 'alex'
print(dic)
# 5,将 {'ip': '192.168.1.1', 'port': 3306} 次字典的port键值对删除.
dic[(1,2)][1].pop('port')
print(dic)

五、补充:分别赋值

a,b=10,20                # a=10,b=10
a,b=[10,20]              # a=10,b=10
a,b=[(10,20),(30,40)]    # a=(10,20),b=(30,40)
a,b=b,a                  #a和b交换值
原文地址:https://www.cnblogs.com/tian-tian/p/9445068.html