首页 > 其他分享 >day08-字典

day08-字典

时间:2024-01-17 17:23:29浏览次数:17  
标签:day08 name age dict print my 字典

字典(Dict)是一种可变、无序的数据类型;那等等...我们回忆一下,字符串列表元祖是什么样的?

  • 字符串不可变,有序
  • 列表可变,有序
  • 元祖不可变,有序
如何判断有序和无序呢,我首先确定在字符串、列表、元祖篇我们都讲到了切片取值,说明他们都是有顺序的,而字典是无序的,说明字典无法通过切片取值,那字典是怎么取值的呢?

1、初识字典

这就需要我们说到字典的存储形式,是以键值对的形式存储的,键值对,键值对,键值对,重要的事情我们说三遍,要学习字典,我们必须要知道键值对key-value 键:是唯一的,所以是不变的数据类型作为键,那列表就不可以作为键,而字符串和数字,元祖都可以作为键 值:可以是任意类型的对象 键值对用冒号 " : "分割,每个键值对之间用逗号 " , " 分割,整个字典包括在花括号 { } 中。
# 字典例子
dict = {"name": "Hua", "age": 18, "city": "beijing"}

2、创建字典

使用{ }创建

dict = {"name": "Hua", "age": 18, "city": "beijing"}
print(dict)

# 输出结果
{'name': 'Hua', 'age': 18, 'city': 'beijing'}
上述是使用了花括号创建的字典

使用dict() 函数

dict() 是一个内置函数,用于创建字典对象,并且dict( )方法有多种用法:  

1、通过关键字参数创建字典

dict(**kwargs):使用关键字参数列表中的 name=value 创建字典,name表示字典的键,value表示字典的值。例如dict(A="A"),使用此方式创建字典时,name是不能带引号。
dict = dict(name="Hua", age=18, city="beijing")
print(dict)

# 输出结果
{'name': 'Hua', 'age': 18, 'city': 'beijing'}

2、创建空字典

dict = dict()
print(dict)

# 输出结果
{}

 

3、通过另外的字典对象创建字典

my_dict = dict(name="Hua", age=18, city="beijing")

my_dict2 = dict(my_dict)

print(my_dict2)
print(id(my_dict))
print(id(my_dict2))

# 输出结果
{'name': 'Hua', 'age': 18, 'city': 'beijing'}
2375348520640
2375350676928

 

我们可以看到可以通过现有的字典来创建一个新的字典,而且地址也不一样 这种新的字典对象和旧的字典对象并不指向同一个对象引用,也可以叫做浅拷贝

4、 通过iterable 创建字典

这个是什么意思呢,意思是dict函数里可以传入元祖或者列表,且传入的元祖或列表里必须再有一个元祖或列表,并且最里边的元祖或列表必须包含两个元素 我们直接看例子 首先先传入一个元祖,然后里边传入元祖和列表两种情况,且包含两个元素
demo = (('a', 1),)
demo = (['a',1],)

# 看一下结果
a = dict(demo)
print(a, type(a))

# 输出结果
{'a': 1} <class 'dict'>
{'a': 1} <class 'dict'>

 

还有先传入一个列表
demo = [('a', 1)]
demo= [['a', 1]]

# 看一下结果
a = dict(demo)
print(a, type(a))

# 输出结果
{'a': 1} <class 'dict'>
{'a': 1} <class 'dict'>

 

3、访问字典

在字典中内容是无序存在的,所以通过切片是取不到值,那使用什么方法取字典的值呢
dict = {"name": "Hua", "age": 18, "city": "beijing"}

 

有两种方式:

1、通过方括号[ key ]取字典的值

print(dict['name'])
print(dict['age'])
print(dict['city'])

 

2、通过 get(key) 方法

print(dict.get('name'))
print(dict.get('age'))
print(dict.get('city'))

 

那这两种取值方式有什么不一样呢? 在于取值如果当key不存在的时候,通过方括号[]取值会报错,而通过get方法的不会报错
print(dict['sex'])

# 执行结果
KeyError: 'sex'    # 报错
print(dict.get('sex'))

# 执行结果
None    # 取不到值返回None

 

4、字典增删改查

添加新的键值对很简单,直接给不存在的 key 赋值即可
my_dict = {}

# 添加键值对
my_dict["name"] = "hua"
my_dict["age"] = 18

# 批量添加键值对 update() 方法
my_dict.update({"name": "hua", "age": 18})

 

通过del
my_dict = {"name": "Hua", "age": 18, "city": "beijing"}

# 删除指定键的键值对
del my_dict["age"]
print(my_dict)               # {'name': 'Hua', 'city': 'beijing'}

 

通过pop
my_dict = {"name": "Hua", "age": 18, "city": "beijing"}

# 使用 pop() 方法删除指定键的键值对,并返回被删除的值
print(my_dict.pop("city"))    # beijing
print(my_dict)                # {'name': 'Hua', 'age': 18}

 

通过clear
my_dict = {"name": "Hua", "age": 18, "city": "beijing"}

# 通过clear清空字典
print(my_dict.clear())         # {}

 

字典中键(key)是唯一的所以不能修改,我们只能修改值(value),而修改值我们也只需要在原有的value值重新通过key赋值,就达到修改的目的了
my_dict = {"name": "Hua", "age": 18, "city": "beijing"}

# 修改键值对
my_dict['age'] = 20
print(my_dict)

# 输出结果
{'name': 'Hua', 'age': 20, 'city': 'beijing'}

 

查询就是我们上边讲的通过方括号[ key ] 或者 get(key)方法可以查到对应的值 那我们还可以查什么呢? 我们可以通过in方法判断字典中是否有对应的键,如果有返回true,否则返回False
my_dict = {"name": "Hua", "age": 18, "city": "beijing"}

# 判断my_dict字典中是否包含age的键
print('age' in my_dict)    # True

# 判断my_dict字典中是否包含sex的键
print('sex' in my_dict)    # False

 

5、字典的常见方法

dict.keys()

返回字典中的所有键(key)
my_dict = {"name": "Hua", "age": 18, "city": "beijing"}
print(my_dict.keys())

# 输出结果
dict_keys(['name', 'age', 'city'])

 

dict.values()

返回字典中所有键对应的值(value)
my_dict = {"name": "Hua", "age": 18, "city": "beijing"}
print(my_dict.values())

# 输出结果
dict_values(['Hua', 18, 'beijing'])

 

dict.items()

返回字典中所有的键值对
my_dict = {"name": "Hua", "age": 18, "city": "beijing"}
print(my_dict.items())

# 输出结果
dict_items([('name', 'Hua'), ('age', 18), ('city', 'beijing')])

 

len(dict)

返回字典中键值对的数量
print(len(my_dict))

 

dict.copy()

可以创建字典的浅拷贝副本
# 字典的copy方法
my_dict = {"name": "Hua", "age": 18, "city": "beijing"}

new_dict = my_dict.copy()

print(new_dict)
print(id(my_dict))
print(id(new_dict))

# 输出结果
{'name': 'Hua', 'age': 18, 'city': 'beijing'}
2912093184256
2912093184448

 

可以看出通过copy创建的字典对象和之前的不是同一个对象 我们修改初始字典的值
my_dict = {"name": "Hua", "age": 18, "city": "beijing"}

new_dict = my_dict.copy()


# 修改原始字典的值
my_dict["age"] = 26

print(my_dict)
print(new_dict)

# 输出结果
{'name': 'Hua', 'age': 26, 'city': 'beijing'}
{'name': 'Hua', 'age': 18, 'city': 'beijing'}

 

可以看到,修改只在原始字典中生效,而拷贝字典保持不变

list(dict)

字典作为参数传递给 list() 函数时,它将返回一个包含字典所有键的列表
my_dict = {"name": "Hua", "age": 18, "city": "beijing"}
print(list(my_dict))

# 输出结果
['name', 'age', 'city']
 

day08练习

初级 1.两种方式创建一个空字典 2.声明一个字典student,包含如下元素姓名、年龄、性别、身高
student = {
"name": "张三",
"age": 20,
"gender": "男",
"height": 1.75,
}
3.计算2题中字典的长度并且打印输出 4.获取字典student中年龄的值 5.修改字典student中身高为1.80   中级 声明一个用户列表信息,每个字典代表1个用户,信息如下:
members = [
{"name": "张三", "age": 20, "gender": "男"},
{"name": "李四", "age": 24, "gender": "女"},
{"name": "王五", "age": 22, "gender": "男"}
]
1.该用户信息中有多少个用户 2.获取用户李四的年龄,打印输出 3.用户张三的信息增加一条信息为country为China,打印输出张三的信息 4.用户王五的信息删除年龄信息 5.获取用户信息,讲用户信息分类到一个列表中,比如name=['张三','李四','王五'] 6.查看用户信息李四中是否有国家的信息 7.获取用户信息中年龄最大的用户名字,年龄最小的用户名字   高级 1.字典删除指定元素的两种方式,两者有什么不同 2.字典和JSON数据有什么区别                

标签:day08,name,age,dict,print,my,字典
From: https://www.cnblogs.com/nuomituan/p/17970526

相关文章

  • [探讨] 字典管理
    一、问题背景字典来源众多后端代码(枚举,if判断,数据库表字段)前端(判断)系统管理>字典管理二、问题更新不及时(可能后端、前端改了,文档没改)没有通知到相应人员三、讨论3.1需不需要统一1)统一的好处/坏处有哪些坏处:集成的应用过多(有历史系统,很难或根本不可能合并)好处:字......
  • 若依前后端分离版关联字典值查询数据工具类使用
    场景若依管理系统导出Excel时添加没有的列和关联码表显示中文进行导出:若依管理系统导出Excel时添加没有的列和关联码表显示中文进行导出_若依的导出添加额外的字段信息上面通过关联表的方式实现查询字典值,若依本身提供了查询redis中缓存的字典值的相关方法。可不修改sql的方式去调......
  • (△△△)给定 n 个字符串,请对 n 个字符串按照字典序排列。 数据范围: 1 \le n \le 100
    描述给定n个字符串,请对n个字符串按照字典序排列。数据范围:1\len\le1000\1≤n≤1000,字符串长度满足1\lelen\le100\1≤len≤100输入描述:输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。输出描述:数据......
  • 【字典树/trie树】实现高效插入和查询字符串的数据结构
    本文是https://www.acwing.com/problem/content/description/837/的总结,有兴趣可以做做字典树的实现依赖于树结构,有两种操作,1是插入字符串,2是查找字符串。使用idx维护最新的结点下标。如下图,假设我们维护一个 可以看到,我们维护了一个树形结构储存了左边的字符串,但......
  • 【Python基础】dict(字典)
    简介介绍dictionary(字典)是除列表以外Python之中最灵活的数据类型字典同样可以用来存储多个数据通常用于存储描述一个物体的相关信息和列表的区别列表是有序的对象集合字典是无序的对象集合字典用{}定义字典特性*字典使用键值对存储数据,键值......
  • 动态规划 多源路径 字典树 LeetCode2977:转换字符串的最小成本
    涉及知识点动态规划多源最短路径字典树题目给你两个下标从0开始的字符串source和target,它们的长度均为n并且由小写英文字母组成。另给你两个下标从0开始的字符串数组original和changed,以及一个整数数组cost,其中cost[i]代表将字符串original[i]更改为字符......
  • python json.dump 将字典写文件json文件后多了一个花括号"}",读取时报错:json.decoder.
    问题复现我的字典格式:importjsond={'Demo':{'Total_Result':'Pass','info':{'test3':'Pass'}},'10.0.0.111':{'Total_Result':'Pass','info':{'test......
  • 字典类型的写法与定义
    #定义一个字典,保存一个同学的信息数据a={'姓名':'罗科','英文名':'ROCCO','年龄':32,'身高':170}print(len(a))#获取数据值长度#写法:字典类型:{键:值}#定义:数据中是对应关系时,用字典类型来保存数据'''特点1、字典类型中的数据是有对应关系2、字典类型中的键(冒号前面)是唯一......
  • python字典中删除键值的方法
    一、pop()方法删除keyPython字典是一种无序的映射数据类型,通过键值对的形式进行存储,可以使用键来快速找到对应的值。在某些情况下,我们可能需要在字典中删除某个键,这时候就可以使用Python字典提供的pop()方法。pop()方法用于删除字典中指定的键,并返回该键对应的值。使用该方法时需传......
  • 官答|初始化GreatSQL报错无法找到数据目录或初始化数据字典失败
    官答|初始化GreatSQL报错无法找到数据目录或初始化数据字典失败GreatSQL推出新栏目——官答官答栏目针对GreatSQL数据库中的问题,选取官方论坛和讨论群中的典型提问进行深入解答。内容涵盖数据库安装部署、配置优化、故障排查、性能测试等方面。在文章中,我们不仅提供解决方案,......