首页 > 其他分享 >22.字典

22.字典

时间:2023-11-11 17:55:43浏览次数:21  
标签:hash 22 stu 键值 key print 字典

字典

字典是Python中的一种容器数据类型,用于存储键值对(key-value)的数据集合。

和现实生活中的字典类似,通过一个 key 对应一个确定唯一的值。

字典是无序的,可变的,且可以存储任意类型的元素

字典的定义

Python 中使用花括号,保存key-value形式表示字典。

key-value 中的 key 必须是一个可哈希的对象,可以使用 hash() 函数来判断数据是否可哈希。 简单理解在一次程序运行结束前,无论该数据什么时候执行hash()函数,都能得到一个唯一确定的值。 一般情况下,不可变对象数据,都可以得到一个哈希值。 所以,理论上,pyhton中的不可变对象数据都可以做为key使用。 但是,为了方便使用,大多数情况下,都会使用字符串类型数据做为key使用。

# 在一次程序运行过程中,hash函数得会得到同一个哈希值
print(hash("ab"))
print(hash("ab"))
print(hash("ab"))

def myhash():
print(hash("ab"))

myhash()

# 可哈希数据
print(hash(123))
print(hash("abc"))
print(hash((1,2,3)))

# 不可哈希数据
print(hash([1,2,3]))
print(hash((1,2,[3])))

字典的创建

字面量定义字典

d1 = {}
d2 = {"name": "Alice", "age": 25, "gender": "female"}

构造方法定义字典

Python 中使用构造方法定义字典的形式很多,了解即可

d1 = dict(one=1, two=2, three=3)
d2 = dict([('two', 2), ('one', 1), ('three', 3)])
d3 = dict((('two', 2), ('one', 1), ('three', 3)))
d4 = dict([('two', 2), ['one', 1], ('three', 3)])
d5 = dict({'one': 1, 'two': 2, 'three': 3})
d6 = dict({'one': 1, 'three': 3}, two=2)
d7 = dict(zip(['one', 'two', 'three'], [1, 2, 3]))

字典数据访问

字典类型没有类似元组,列表那样的数字下标索引。字典使用 key 来获取对应的值,使用 key的方式同下标索引一样,也使用中括号的方式,将元组,列表中的数字下标索引替换为key。 可以简单将key理解成为自定义的下标索引。

格式:字典对象[key]

stu = {"name":"Tom", "age": 23, "gender":"male"}
print(stu["name"])
print(stu["age"])
k = "gender"
print(stu[k])

字典元素添加与修改

字典中的每一个元素都以键值对形式表示,一个key对应一个value, 在一个字典中,key具有唯一性,当给一个key赋值时,如果key在当前字典中不存在,则是添加数据,如果key存在,则对当前key所对应的值进行修改更新。

格式: 字典对象[key] = value

stu = {"name":"Tom", "age": 23, "gender":"male"}
print(stu)
# 添加新元素
stu["address"] = "BeiJing"
print(stu)
# 修改数据
stu["name"] = "Jack"
stu["address"] = "ShangHai"
print(stu)

字典元素的删除

字典也可以使用 del 通过key删除元素,当删除元素时,整个键值对都会被删除。

格式:del 字典对象[key]

stu = {'name': 'Tom', 'age': 23, 'gender': 'male', 'address': 'BeiJing'}
print(stu)
# 删除元素
del stu['age']
print(stu)
del stu['address']
print(stu)

字典的有序性(Python 3.7+)

在Python 3.7及更高版本中,字典被认为是有序的,即它们可以保持键值对的添加顺序。这意味着当遍历字典或打印字典时,键值对的顺序与它们添加到字典中的顺序相同。这种有序性是字典的内置特性,不需要额外的操作。

然而,在Python 3.6及更早版本中,字典是无序的,无法保持键值对的顺序。这意味着当遍历字典或打印字典时,键值对的顺序是不确定的,可能与它们添加到字典中的顺序不同。

因此,如果在编程中需要依赖字典键值对的顺序,建议使用Python 3.7及更高版本以确保有序性。如果使用旧版本的Python,可以考虑使用collections.OrderedDict来实现有序字典的功能。

字典的应用场景

  • 字典适用于存储具有相关性的数据,如用户信息、学生成绩等。每个键值对表示一个独立的数据项,通过键来关联对应的值。
  • 字典提供了快速查找和访问数据的能力,通过键可以直接定位对应的值,而不需要遍历整个字典。这使得字典在需要根据特定键快速获取对应值的场景下非常有用。
  • 字典作为数据的容器,提供了丰富的操作方法,可以方便地进行遍历、搜索、插入和删除操作。可以通过循环遍历字典的键或值,通过键进行搜索和更新数据,通过键值对的添加和删除来动态修改字典的内容。这种灵活性使得字典成为处理各种数据结构的重要工具。

标签:hash,22,stu,键值,key,print,字典
From: https://www.cnblogs.com/csfsz/p/17826150.html

相关文章

  • 2287
    给你两个下标从 0 开始的字符串 s 和 target 。你可以从 s 取出一些字符并将其重排,得到若干新的字符串。从 s 中取出字符并重新排列,返回可以形成 target 的 最大 副本数。 示例1:输入:s="ilovecodingonleetcode",target="code"输出:2解释:对于"code"的......
  • 重新学习算法_Day3-哈希表&2283&str与list转换
    HashTable 感觉从原理上说会用但是实际应用感觉不知道有什么用或者不知道怎么用例如:给你一个下标从 0 开始长度为 n 的字符串 num ,它只包含数字。如果对于 每个 0<=i<n 的下标 i ,都满足数位 i 在 num 中出现了 num[i]次,那么请你返回 true ,否则返回......
  • 力扣2293 暴力模拟
    2293. 极大极小游戏给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。对 nums 执行下述算法:设 n 等于 nums 的长度,如果 n==1 ,终止 算法过程。否则,创建 一个新的整数数组 newNums ,新数组长度为 n/2 ,下标从 0 开始。对于满足 0<=i<n/2 的......
  • 春秋云镜 2022网鼎杯半决赛 WP
    春秋云镜2022网鼎杯半决赛fscan扫描39.99.228.107:22open39.99.228.107:80open[*]aliveportslenis:2startvulscan[*]WebTitle:http://39.99.228.107code:200len:39988title:XIAORANG.LAB发现是wordpresswpscan--urlhttp://39.99.228.107/--api-t......
  • AtCoder Beginner Contest(abc) 322
    B-PrefixandSuffix难度:⭐题目大意给定两个字符串t和s,如果t是s的前缀则输出1,如果是后缀则输出2,如果都是则输出0,都不是则输出3;解题思路暴力即可;神秘代码#include<bits/stdc++.h>#defineintl1ngl1ng#defineIOSios::sync_with_stdio(false),cin.......
  • [USACO22OPEN] Apple Catching G
    [USACO22OPEN]AppleCatchingG题目描述天上下苹果了!在某些时刻,一定数量的苹果会落到数轴上。在某些时刻,FarmerJohn的一些奶牛将到达数轴并开始接苹果。如果一个苹果在没有奶牛接住的情况下落到数轴上,它就会永远消失。如果一头奶牛和一个苹果同时到达,奶牛就会接住苹果。每头......
  • VMware NSX Advanced Load Balancer (NSX ALB) 22.1.5 - 多云负载均衡平台
    VMwareNSXAdvancedLoadBalancer(NSXALB)22.1.5-多云负载均衡平台应用交付:多云负载均衡、Web应用防火墙和容器Ingress服务请访问原文链接:https://sysin.org/blog/vmware-nsx-alb-22/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org负载均衡平台NSXAdvan......
  • 19.9 Boost Asio 同步字典传输
    这里所代指的字典是Python中的样子,本节内容我们将通过使用Boost中自带的Tokenizer分词器实现对特定字符串的切割功能,使用BoostTokenizer,可以通过构建一个分隔符或正则表达式的实例来初始化tokenizer。然后,可以使用该实例对输入字符串进行划分。tokenizer将在输入字符串中寻找匹配......
  • 【re】[广东省大学生攻防大赛 2022]pyre --爆破字符
    附件下载下来,解压,发现是一个python打包的exe这里用pyinstxtractor进行反编译,后面会得到一个文件夹,里面有一个pyc文件这里可以用进行网站进行对pyc进行反编译:在线Pythonpyc文件编译与反编译(lddgo.net)反编译的python结果如下:#Visithttps://www.lddgo.net/string/pyc-com......
  • 【专题】2022-2023中国跨境出口B2C电商报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32805原文出处:拓端数据部落公众号全球疫情的爆发对于全球经济和消费市场都带来了很大的冲击,特别是在消费者的消费行为和零售市场格局方面发生了重大变革。同时由于全球供应链的重新调整,产业分化现象也加速出现。中国跨境电商已经历了十年以上的发......