首页 > 其他分享 >字典

字典

时间:2022-11-23 11:12:26浏览次数:42  
标签:alex name age dic print 字典

一.初始字典

why:目前已经学习了容器型数据类型有list和tuple,list够用吗,有什么缺点
    1.列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢
    2.列表只能按照顺序存储,数据与数据之间的关联性不强
所以针对以上的缺点,需要引入另一种容器型的数据类型,解决上面的问题,这就需要dict字典。

what:
    数据类型可以按照多种角度进行分类,就跟咱们人一样,人按照地域可以划分分为亚洲人,欧洲人,美洲人等,但是按照肤色又可以分为白种人,黄种人,黑种人,等等,数据类型可以按照不同的角度进行分类,先给大家按照可变与不可变的数据类型的分类:
    不可变(可哈希)的数据类型:int,str,bool,tuple。
    可变(不可哈希)的数据类型:list,dict,set。
字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的:
    Key:不可变(可哈希)的数据类型.并且键是唯一的,不重复的。
    Value:任意数据(int,str,bool,tuple,list,dict,set),包括后面要学的实例对象等。
    在Python3.5版本(包括此版本)之前,字典是无序的。
    在Python3.6版本之后,字典会按照初建字典时的顺序排列(即第一次插入数据的顺序排序)。

 当然,字典也有缺点:他的缺点就是内存消耗巨大。

二.字典的几种创建方法

# 字典
# 方法一:使用list或者tuple来创建
dic = dict([('name', 'huangping'), ('city', 'hangzhou'), ('hobby', ['电脑', '手机'])])
# dic = dict((('name','huangping'),('city','hangzhou'),('hobby',['电脑','手机'])))
print(dic)
# 方法二:
dic = dict(one=1, two=2, three=3)
print(dic)
# 方法三:
dic = dict({'one': 1, 'two': 2, 'three': 3})
# dic = {'one': 1, 'two': 2, 'three': 3}
print(dic)

# 方法四: 后面会讲到先了解
dic = dict(zip(['one', 'two', 'three'],[1, 2, 3]))
print(dic)

# 方法五: 字典推导式 后面会讲到
# dic = { k: v for k,v in [('one', 1),('two', 2),('three', 3)]}
# print(dic)

# 方式六:利用fromkey后面会讲到。
# dic = dict.fromkeys('abcd','太白')
# print(dic)  # {'a': '太白', 'b': '太白', 'c': '太白', 'd': '太白'}
# 不合法
# dic = {[1, 2, 3]: '周杰伦'} # list是可变的. 不能作为key
# dic = {{1: 2}: "哈哈哈"} # dict是可变的. 不能作为key
# dic = {{1, 2, 3}: '呵呵呵'} # set是可变的, 不能作为key

三.字典的增删改查

#字典的增删改查
dic = {'name': '黄平', 'city': '杭州', 'age': 31}

#方法一:通过键值对直接增加
dic['hobby'] = '上网'    #key 存在这是改,不存在则是增加
dic['age'] = 18
print(dic)

结果:
{'name': '黄平', 'city': '杭州', 'age': 18, 'hobby': '上网'}

#方法二:setdefault
dic.setdefault('hobby','shangwang')     # key 存在则不变,key不存在则添加,后面的参数为新增的key的value,不写value这默认value为None
print(dic)
dic.setdefault('city','上海')
print(dic)
ret = dic.setdefault('city','上海')   # 有返回值
print(ret)

结果:
{'name': '黄平', 'city': '杭州', 'age': 31, 'hobby': 'shangwang'}
{'name': '黄平', 'city': '杭州', 'age': 31, 'hobby': 'shangwang'}
杭州

dic = {'name': '黄平', 'city': '杭州', 'age': 31}
#方法一:pop 根据可以删除
dic.pop('age')      # 默认情况key 值不存在会报错
ret = dic.pop('hobby','key不存在')   #加上第二个参数,key不存在不会报错,会有返回值,key 存在则返回value值
print(ret)
print(dic)

结果:
key不存在
{'name': '黄平', 'city': '杭州'}

#方法二:clear 清空
dic.clear()
print(dic)

结果:
{}

#方法三:del
del dic['name']
print(dic)

del dic         #删除整个字典
print(dic)

 

dic = {'name': '黄平', 'city': '杭州', 'age': 31}
dic['name'] = '小白'
print(dic)


结果:
{'name': '小白', 'city': '杭州', 'age': 31}

# update
dic = {'name': '太白', 'age': 18}
dic.update(sex='男', height=175)
print(dic) # {'name': '太白', 'age': 18, 'sex': '男', 'height': 175}

dic = {'name': '太白', 'age': 18}
dic.update([(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')])
print(dic) # {'name': '太白', 'age': 18, 1: 'a', 2: 'b', 3: 'c', 4: 'd'}

dic1 = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic1.update(dic2)
print(dic1) # {'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75}
print(dic2) # {'name': 'alex', 'weight': 75} 

dic = {'name': '黄平', 'city': '杭州', 'age': 31}
# 通过键值查
print(dic['name'])      # 黄平,键值不存在则报错

# 通过get
print(dic.get('name','值不存在'))  #键存在,则返回value,键值不存在,如果第二个参数为空值返回None ,不为空则返回参数值

# keys  返回键值
for key in dic.keys():
    print(key)

结果:
name
city
age

# values 返回value
for value in dic.values():
    print(value)

结果:
黄平
杭州
31


# item 返回key和value
for key,value in dic.items():
    print(key,value)

结果:
name 黄平
city 杭州
age 31

 

相关练习:

dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
# 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
dic['k4'] = 'v4'
print(dic)
# 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
dic['k1'] = 'alex'
print(dic)
# 请在k3对应的值中追加一个元素 44,输出修改后的字典
dic['k3'].append(44)
print(dic)
# 请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
dic['k3'].insert(0,18)
print(dic)

结果:
D:\pythonProject\python3\venv\Scripts\python.exe D:\pythonProject\python3\day10\s1.py 
{'k1': 'v1', 'k2': 'v2', 'k3': [11, 22, 33], 'k4': 'v4'}
{'k1': 'alex', 'k2': 'v2', 'k3': [11, 22, 33], 'k4': 'v4'}
{'k1': 'alex', 'k2': 'v2', 'k3': [11, 22, 33, 44], 'k4': 'v4'}
{'k1': 'alex', 'k2': 'v2', 'k3': [18, 11, 22, 33, 44], 'k4': 'v4'}

 

四.字典的嵌套

典的嵌套是非常重要的知识点,这个必须要建立在熟练使用字典的增删改查的基础上,而且字典的嵌套才是咱们在工作中经常会遇到的字典,工作中遇到的字典不是简简单单一层,而就像是葱头一样,一层接一层,但一般都是很有规律的嵌套,那么接下来我们就学习一下字典的嵌套:

 

dic = {
    'name':'汪峰',
    'age':48,
    'wife':[{'name':'国际章','age':38}],
    'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'}
}

# 1. 获取汪峰的名字。
print(dic['name'])
# 2.获取这个字典:{'name':'国际章','age':38}。
print(dic['wife'][0])
# 3. 获取汪峰妻子的名字。
print(dic['wife'][0]['name'])
# 4. 获取汪峰的第三个孩子名字。
print(dic['children']['girl_three'])

结果:
D:\pythonProject\python3\venv\Scripts\python.exe D:\pythonProject\python3\day10\s1.py 
汪峰
{'name': '国际章', 'age': 38}
国际章
顶顶

 

练习:

dic1 = {
 'name':['alex',2,3,5],
 'job':'teacher',
 'oldboy':{'alex':['python1','python2',100]}
 }
# 1,将name对应的列表追加⼀个元素’wusir’。
dic1['name'].append('wusir')
print(dic1)
# 2,将name对应的列表中的alex⾸字⺟⼤写。
dic1['name'][0] = dic1['name'][0].title()
print(dic1)
# 3,oldboy对应的字典加⼀个键值对’⽼男孩’,’linux’。
dic1['oldboy']['老男孩'] = 'linux'
print(dic1)
# 4,将oldboy对应的字典中的alex对应的列表中的python2删除
dic1['oldboy']['alex'].remove('python2')
print(dic1)

结果:
D:\pythonProject\python3\venv\Scripts\python.exe D:\pythonProject\python3\day10\s1.py 
{'name': ['alex', 2, 3, 5, 'wusir'], 'job': 'teacher', 'oldboy': {'alex': ['python1', 'python2', 100]}}
{'name': ['Alex', 2, 3, 5, 'wusir'], 'job': 'teacher', 'oldboy': {'alex': ['python1', 'python2', 100]}}
{'name': ['Alex', 2, 3, 5, 'wusir'], 'job': 'teacher', 'oldboy': {'alex': ['python1', 'python2', 100], '老男孩': 'linux'}}
{'name': ['Alex', 2, 3, 5, 'wusir'], 'job': 'teacher', 'oldboy': {'alex': ['python1', 100], '老男孩': 'linux'}}

 



标签:alex,name,age,dic,print,字典
From: https://www.cnblogs.com/zhazhadba/p/16917623.html

相关文章

  • 212. 单词搜索 II(字典树/前缀树)
    给定一个 mxn 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻......
  • Dict - 字典/hash
    哈希表结构定义typedefstructdictht{//哈希表数组dictEntry**table;//哈希表大小unsignedlongsize;//哈希表大小掩码,用于计算索引值/......
  • LC[386] 字典序排数
    https://leetcode.cn/problems/lexicographical-numbers/description/想像成一颗树的遍历AC代码:classSolution{public:vector<int>lexicalOrder(intn){......
  • 五分钟拿捏Python字典-Python3入门必备[字典详细操作]
    介绍在上一篇文章《​​Python3详细的数组基础操作-入门必备[列表的操作]​​》中讲解了Python的列表操作,这次接着唠唠Python数组中的字典,字典是Python的另一种可变容器......
  • 10python字典
    列表和字典的区别是列表可以通过索引来访问值,而字典可以通过名称来访问各个值。字典这种数据结构称为映射(mapping),字典是Python中唯一内置映射类型,值不按照顺序排列,而是......
  • 【Python】字典dict_相同key,不同value的添加方法
     dict.setdefault(key,[]).append(value) #coding:utf-8fromloguruimportloggeraslogsclassdemo:defrun(self):new_dict={}#......
  • MAUI新生1.5-XAML语法基础:资源字典ResourceDictionary
    每个派生自VisualElement或Application的对象,都有一个Resources属性,属性值为Dictionary<string,object>类型的集合对象,这些集合对象可作为资源,提供给元素及其在控件树中的......
  • 46.通过字典和Series对象进行分组统计
     -----------------------------------------------------------------------------------------------------------------------------------------------------------......
  • 数据字典和动态性能视图
    数据字典存储在SYSTEM表空间中,包含对象定义、权限、用户角色等信息。USER_*用户所拥有的对象信息ALL_*用户能访问的对象信息DBA_*整个数据库中的对象信息系统中所......
  • 爆破字典:linux 敏感文件-01
    linux中敏感文件1.0/apache/apache/conf/httpd.conf/apache/apache2/conf/httpd.conf/apache/php/php.ini/etc/anacrontab/etc/apache/apache.conf/etc/apache/htt......