您的位置: 网站首页> python基础> 当前文章
字典的定义,元素增删改查,键值操作等常见方法
老董-我爱我家房产SEO2021-01-17169围观,117赞
背景:
怎样存储一个网站所有用户昵称?我们使用了列表。但是注册网站时每个用户除了昵称还有年龄等信息。单纯的列表存储似乎不大方便,谁来解决?—字典。
person={'name':'马云','money':很多','sex':'man','address':'杭州'}
说明:
字典和列表一样,也能够存储多个数据。
列表中找某个元素时,是根据下标进行的。
字典中找某个元素时,是根据'名字'(就是冒号:前面的那个值,例如上面代码中的'name'、'id'、'sex')。
字典的每个元素由2部分组成,键:值。例如'name':'马云','name'为键,'马云'为值。
一:字典创建:
1.使用{}创建字典
2.使用dict函数创建字典
3.使用fromkeys方法创建字典
# ‐*‐ coding: utf‐8 ‐*‐ print('以下是使用{}创建字典') # 创建空字典 d1 = {} # 创建有元素的字典 d2 = {'a': 1, 'b': 2} # python的键必需是不可变类型,值可以是任意的类型 d3 = {1: "seo", "name": "马云", (1, 8): 3.1415926, 'liebiao': [1, 2, 4, 3], True: {"help": 30}} print(d1) print(d2) print(d3) print('以下是使用dict函数创建字典') # 创建空字典 d1 = dict() # 创建有元素的字典 d2 = dict([(1, 'a'), (2, 'b'), (3, 'c')]) """ 注意: 1 使用dict创建字典的时候,参数(函数的参数这个概念后面会说)必需是可迭代类型(即可以for循环遍历,此处不理解没关系), 参数的元素必须是成对出现的,元素的第一个值作为字典的键,第二个值作为字典的值。 2 这种类型的参数可以直接通过zip或者是map函数来快速创建 """ # 下面的这几种形式都是支持的 # 1. 两个元素组成的二维列表: [['a', 1], ['b', 2]] # 2. 包含双值元组的列表: [('a', 'b'), ('c', 'd')] # 3. 包含双值列表的元组: (['a', 1], ['b', 2], ['c', 3], ['d', 4]) # 4. 包含双值元组的元组: (('a', 'b'), ('c', 'd'), ('e', 'f')) # 5. 双字符字符串组成的列表: ['ab', 'cd', 'ef'] # 6. 双字符字符串组成的元组: ('ab', 'cd') # 7. 上面的可以互相嵌套: [['a', 1], ('b', '2'), 'c3',(('nb',), ['d', 5])] d3 = dict([['a', 1], ('b', '2'), 'c3',(('nb',), ['d', 5])]) print(d1) print(d2) print(d3) print('以下是fromkeys创建字典') # fromkeys(keys,[value]) 第一个参数是可迭代类型,类型的元素必须是不可变的, 第二个值是默认值,默认是None # 1.使用dict.fromkkeys()创建字典,字典的键分别是a,b,c值都是None d1 = dict.fromkeys('abc') # 字典的键分别是1, 2, 3, 4值都是马老板 d2 = dict.fromkeys([1,2,3,4], '马老板') # 2. 使用{}.fromkeys()创建字典 d3 = {}.fromkeys('abc') # 3. 如果{}不是空的,那么使用fromkeys创建时会覆原来的内容 d4 = {'a': 2}.fromkeys(["name", "age", "class", "addr"], "大哥") print(d1) print(d2) print(d3) print(d4)
D:installpython3python.exe D:/pyscript/test/1.py 以下是使用{}创建字典 {} {'a': 1, 'b': 2} {1: {'help': 30}, 'name': '马云', (1, 8): 3.1415926, 'liebiao': [1, 2, 4, 3]} 以下是使用dict函数创建字典 {} {1: 'a', 2: 'b', 3: 'c'} {'a': 1, 'b': '2', 'c': '3', ('nb',): ['d', 5]} 以下是fromkeys创建字典 {'a': None, 'b': None, 'c': None} {1: '马老板', 2: '马老板', 3: '马老板', 4: '马老板'} {'a': None, 'b': None, 'c': None} {'name': '大哥', 'age': '大哥', 'class': '大哥', 'addr': '大哥'} Process finished with exit code 0
二:字典相关操作:
1.访问值
# ‐*‐ coding: utf‐8 ‐*‐ print('以下通过键名直接访问:') #字典中的值都是以下通过键名来直接访问:的 d1 = {'name': '马云', 'age': 55} print(d1['name']) print('以下通过get方法访问:') # 使用内键方法get来访问:,get方法接收两个参数,第一个是键名,第二个是默认值 # 默认值的意思就是说,假如键名不存在,就返回默认值, 默认是None print(d1.get('name')) print(d1.get('wife')) # 不存在,返回默认值None print(d1.get("wife", "wife-girl")) # 不存在,返回自定义的默认值girl print('以下通过setdefault方法访问:') # 使用字典内建方法setdefault来访问:字典中的键,该方法接收两个参数,第一个是键名,第二个是默认值None。 # 如果键名存在,就返回键名对应的值,如果键名不存在,则在字典中创建一个键名,并把默认值设为对应的值。 print(d1.setdefault('name')) print(d1.setdefault('son','马小云')) print(d1['son']) print('以下通过for循环访问:') # 以下通过for循环来访问:字典中的元素,for循环默认迭代的是字典中的键(key) for key in d1: print(d1[key]) print('以下通过items()访问:') # Python字典items()函数以列表返回可遍历的(键, 值) 元组数组 print(d1.items()) for key, val in d1.items(): print(key, val) print('以下是通过values()访问:') values = d1.values() print(values) print(list(values)) # 转为列表
以下通过键名直接访问: 马云 以下通过get方法访问: 马云 None wife-girl 以下通过setdefault方法访问: 马云 马小云 马小云 以下通过for循环访问: 马云 55 马小云 以下通过items()访问: dict_items([('name', '马云'), ('age', 55), ('son', '马小云')]) name 马云 age 55 son 马小云 以下是通过values()访问: dict_values(['马云', 55, '马小云']) ['马云', 55, '马小云']
细心的同学可能发现字典的values()方法输出的是dict_values([xxx])形式,这是一种python的视图对象,此时不必急于理解,先记住可以直接用用list将其转为列表。
2.修改元素
3.添加元素
4.删除元素
5.查询是否存在某个键
# ‐*‐ coding: utf‐8 ‐*‐ print('以下是修改元素') d1 = {'name':'马云','nickname':'首富','age':55} d1['age'] = 18 print(d1['age']) print('以下是添加元素') # 在使用 变量名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素 d1 = {'name':'马云','nickname':'首富','age':55} d1['name2'] = '马化腾' print(d1) # 将另一个字典中的元素添加进来 d2 = {1: 'a', 2: 'b'} d1.update(d2) # 将dict2中的所有键值对添加到dict1中 print(d1) print('以下是删除元素del clear应用') # 删除指定键名的元素 d1 = {'name':'马云','nickname':'首富','age':55} del d1['age'] # 把键名为age的元素删除 print(d1.pop('name')) # 把键名为name的元素删除并返回它的值 # 删除字典 d1不存在了 del d1 # 清空整个字典(删除字典里面的所有元素) d2 = {'name':'马云','nickname':'首富','age':55} d2.clear() print(d2) print('以下是查询字典中是否存在某个键') # 使用成员操作符(in, not in)查询字典中是否存在某个键名 d1 = {'name':'马云','nickname':'首富','age':55} if 'name' in d1: print('name在') if 'id' not in d1: print('id不在')
D:installpython3python.exe D:/pyscript/test/1.py 以下是修改元素 18 以下是添加元素 {'name': '马云', 'nickname': '首富', 'age': 55, 'name2': '马化腾'} {'name': '马云', 'nickname': '首富', 'age': 55, 'name2': '马化腾', 1: 'a', 2: 'b'} 以下是删除元素del clear应用 马云 {} 以下是查询字典中是否存在某个键 name在 id不在 Process finished with exit code 0
三:字典常用函数:
1.len():测量字典中,键值对的个数;也就是字典的长度
2.keys():返回一个包含字典所有key的列表
3.values():返回一个包含字典所有value的列表
4.items():返回一个包含所有(键,值)元祖的列表
在Python3中dict.values()、dict.keys()和dict.items()返回一个视图对象,而不是一个列表,官方文档在这里https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects,也可以参考本文字典视图对象。大家可以用list把它转为列表或者直接循环输出。大家此时可以不必理解它,先知道有这么回事。
# ‐*‐ coding: utf‐8 ‐*‐ d1 = {'name': '马云', 'nickname': '首富', 'age': 55} print('d1长度', len(d1)) print('d1的键', d1.keys()) print(list(d1.keys())) print('d1的值', d1.values()) print( list(d1.values()) ) print( d1.items() ) print( list(d1.items()) ) print('----------------') for value in d1.values(): print(value) print('==================') for k,v in d1.items(): print(k,v)
d1长度 3 d1的键 dict_keys(['name', 'nickname', 'age']) ['name', 'nickname', 'age'] d1的值 dict_values(['马云', '首富', 55]) ['马云', '首富', 55] dict_items([('name', '马云'), ('nickname', '首富'), ('age', 55)]) [('name', '马云'), ('nickname', '首富'), ('age', 55)] ---------------- 马云 首富 55 ================== name 马云 nickname 首富 age 55
四:更多字典函数介绍:
函数 | 说明 |
---|---|
clear | 清空字典中的所有元素 |
copy | 返回字典的一个浅拷贝 |
dict.fromkeys(seq,val=None) | 创建并返回一个新的字典,以seq(序列类型)中的元素做该字典,val做该字典中所有键值对应的初始值(如果不提供此值,则默认为None) |
dict.get(key, default=None) | 返回字典中键key对应的值,如果字典中不存在此键,则返回default的值,default的值默认为None |
dict.items() | 返回一个包含字典中键值对组成的类集合对象dict_items,只能通过迭代的方式获取里面的元素 |
dict.keys() | 返回字典中所有键组成的一个类集合对象,这个对象叫dict_keys |
dict.pop(key) | 从字典中删除键key及其对应的值,并返回其对应的值 |
dict.popitem() | 删除字典中的某个键值对,并返回有键值对组成的双元素元组 |
dict.setdefault(key,default=None) | 如果字典中存在key,则返回key对应的值,如果不存在则在字典中新建一个key,并以default的值设为它的值,default的值默认是None |
dict.update(dict2) | 将字典dict2中的所有元素添加到dict中 |
dict.values() | 返回由dict中所有值组成的dict_values对象 |
五:字典其他特性总结:
1.字典是一种映射类型,是由键值对组成的,其中【字典的键】必需是不可变的类型(专业说法叫可哈希的),同一个字典内不能出现同样的键名;字典的值可以是任意类型也是可以重复的。
2.字典是可变类型,因此可以对字典进行增删改查等操作。【可变与不可变参考:变量共性总结】
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
字典的定义,元素增删改查,键值操作等常见方法文章写得不错,值得赞赏