Python字典介绍

版权声明:转载注明出处 https://blog.csdn.net/AtlanSI/article/details/81667179

1.映射类型

字典是Python语言中唯一的映射类型。映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的关系。它们与Perl中的哈希类型(又称关联数组)相似,通常被认为是可变的哈希表。一个字典对象是可变的,它是一个容器类型,能存储任意个数Python对象,其中也包括其他容器类型。字典类型和序列类型容器类(列表,元祖)的区别是存储和访问数据的方式不同。序列类型只用数字类型的键(从序列的开始按数值顺序索引)。映射类型可以用其他对象类型做键,一般最常见的是用字符串做键。和序列类型的键不同,映像类型的键直接或间接地存储的数据值相关联。但因为在映射类型中,我们不在使用’序列化排序‘的键,所以映像类型中的数据是无序排序的(但是python3.6以后仿佛有序了)

2.创建字典和字典赋值

dic = {
    'name':['Atlan','SI'], #此处嵌套的列表
    'age_bra':[{'age':18,
            'bra':'32D'}], #此处嵌套字典
}
dic2= {'name':'Atlan'} #类似于这样的赋值

3.字典的增 删 查 改

3.1:向字典中增加数据(两种)

dic1 = {'age':18,'name':'Atlan','bra':'32D'}
dic1['high'] = 185
dic1['age'] = 19
print(dic1)
{'age': 19, 'name': 'Atlan', 'bra': '32D', 'high': 185}
#字典没有对应的键,就添加,有的话就覆盖

dic1 = {'age':18,'name':'Atlan','bra':'32D'}
dic1.setdefault('wetght')
dic1.setdefault('wetght',150)
dic1.setdefault('name',150)
print(dic1)
{'age': 18, 'name': 'Atlan', 'bra': '32D', 'wetght': None}
#添加的键不存在于原字典,就添加,否则不动原字典 没有指定键的值的话,使用None站位

3.2:删除字典中的数据

dic1 = {'age':18,'name':'Atlan','bra':'32D'}
print(dic1.pop('age')) #有返回值,返回的是原字典中键对应的值,按键删除
18

print(dic1.pop('age',None)) #可设置返回值,有对应的键就删除(返回对应的值),否则就返回自定义的返
回值
None

dic1.popitem() #随机删除,python3.6中默认删除最后一个
print(dic1.popitem()) #返回的是元祖,内容是被删除的键值对
('bra', '32D')

del dic1 #删除字典

dic1.clear() #清空字典

3.3:更改字典中的数据

dic1 = {'age':18,'name':'Atlan','bra':'32D'}
dic1['age'] = 19 #覆盖的方式更改
print(dic1)
{'age': 19, 'name': 'Atlan', 'bra': '32D'}

dic1 = {'age':18,'name':'Atlan','bra':'32D'}
dic2 = {'name':'zp','weight':75}
dic2.update(dic1)   #更改的字典中有相同的键,就覆盖。否则就追加到字典
print(dic1)
print(dic2)
{'age': 19, 'name': 'Atlan', 'bra': '32D'}
{'name': 'Atlan', 'weight': 75, 'age': 19, 'bra': '32D'}

3.4:查询字典中的数据

dic1 = {'age':18,'name':'Atlan','bra':'32D'}
print(dic1.keys()) #返回所有的键
dict_keys(['age', 'name', 'bra'])

dic1 = {'age':18,'name':'Atlan','bra':'32D'}
print(dic1.values()) #返回所有的值
dict_values([18, 'Atlan', '32D'])

dic1 = {'age':18,'name':'Atlan','bra':'32D'}
print(dic1.items()) #以一一对应的方式返回,所有键值列表(list)的形式返回
dict_items([('age', 18), ('name', 'Atlan'), ('bra', '32D')])

dic1 = {'age':18,'name':'Atlan','bra':'32D'}
for i in dic1:
    print(i)
age
name
bra

dic1 = {'age':18,'name':'Atlan','bra':'32D'}
print(dic1.get('name')) #有则返回对应的值,否则none
Atlan

dic1 = {'age':18,'name':'Atlan','bra':'32D'}
print(dic1.get('name1','nokeys')) #自定义返回值(不存在是返回)
123

4.小练习

4.1:去除字典操作函数items的返回结果中括号(原返回元祖,先字符串)

#原示例:
dic1 = {'age':18,'name':'Atlan','bra':'32D'}
for i in dic1.items():
    print(i)
('age', 18)
('name', 'Atlan')
('bra', '32D')
#需求的结果
dic1 = {'age':18,'name':'Atlan','bra':'32D'} 
for i,a in dic1.items():
    print(i,a)
age 18
name Atlan
bra 32D

4.2:需求如下(字典如下)

dic = {
    'name':['Atlan','zixi','dong'],
    'lol':{
        'time':'1213',
        'learn_money':19800,
        'addr' : 'CBD'
    },
    'age':21
}

       更改字典中的age的值为59

dic['age'] = 59
print(dic)
{'name': ['Atlan', 'zixi', 'dong'], 'lol': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD'}, 'age': 56}

       在name的值中加入bro

dic['name'].append('hh')
print(dic)
{'name': ['Atlan', 'zixi', 'dong', 'hh'], 'lol': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD'}, 'age': 21}

       将name的值zixi更改为大写

dic['name'][1] = dic['name'][1].upper()
print(dic)
{'name': ['Atlan', 'ZIXI', 'dong'], 'lol': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD'}, 'age': 21}

       在lol的字典中加入female : 7

dic['lol']['female'] = 7
print(dic)
{'name': ['Atlan', 'zixi', 'dong'], 'lol': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD', 'female': 7}, 'age': 21}

       更改female的值为8

dic['lol'].setdefault('female',8)
print(dic)
{'name': ['Atlan', 'zixi', 'dong'], 'lol': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD', 'female': 8}, 'age': 21}

猜你喜欢

转载自blog.csdn.net/AtlanSI/article/details/81667179
今日推荐