python中字典的定义和操作_字典的定义,元素增删改查,键值操作等常见方法

背景:

怎样存储一个网站所有用户昵称?我们使用了列表。但是注册网站时每个用户除了昵称还有年龄等信息。单纯的列表存储似乎不大方便?谁来解决?-字典

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)

D:installpython3python.exe D:/pyscript/test/1.py

以下通过键名直接访问:

马云

以下通过get方法访问:

马云

None

wife-girl

以下通过setdefault方法访问:

马云

马小云

马小云

以下通过for循环访问:

马云

55

马小云

以下通过items访问:

dict_items([('name', '马云'), ('age', 55), ('son', '马小云')])

name 马云

age 55

son 马小云

Process finished with exit code 0

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

返回一个包含所有(键,值)元祖的列表

# ‐*‐ coding: utf‐8 ‐*‐

d1 = {'name':'马云','nickname':'首富','age':55}

print('d1长度',len(d1))

print('d1的键',d1.keys())

print('d1的值',d1.values())

print(d1.items())

Process finished with exit code 0

D:installpython3python.exe D:/pyscript/test/1.py

d1长度 3

d1的键 dict_keys(['name', 'nickname', 'age'])

d1的值 dict_values(['马云', '首富', 55])

dict_items([('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.字典是可变类型,因此可以对字典进行增删改查等操作。【可变与不可变参考:变量共性总结】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值