当前位置: 首页 > news >正文

Python入门笔记(三)

文章目录

  • 第八章 字典dict
    • 8.1 创建字典:{}、dict()、字典生成式、zip()
    • 8.2 获取键对应的值:get()
    • 8.3 in, not in判断键是否在字典中
    • 8.4 增加键值对:fromkeys()、setdefault()、update()
    • 8.5 删除键值对:del语句、clear()、pop()、popitem()
    • 8.6 遍历键、值、键值对:keys()、values()、items()
    • 8.7 字典、列表相互嵌套
    • 8.8 字典中索引键对应的值:.index()
    • 8.9 备份字典:copy()




前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。
点击跳转:人工智能从入门到精通教程




本文电子版获取方式:
「Python入门笔记(三).pdf」,复制整段内容,打开最新版「夸克APP」即可获取。
链接:https://pan.quark.cn/s/93216671fe07


第八章 字典dict

和list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而变慢;
  2. 需要占用大量的内存,内存浪费多。

而list相反:

  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。


  1. 字典是无序的,是可变序列
  2. 用花括号括起来
  3. 字典是一系列的键-值对(key-value),值可以是数字、字符串、列表乃至字典。
  4. 字典是一种动态结构,可随时在其中添加键-值对。要添加键-值对,可依次指定字典名、用方括号括起来键和相关联的值
  5. dict的key必须是不可变对象。
  6. 键不可重复,值可以重复

8.1 创建字典:{}、dict()、字典生成式、zip()

  1. 花括号
  2. 使用内置函数dict()
  3. 字典生成式

dict()
例1:

dict1 = dict(name='zdb', age='1')
print(dict1)
{'name': 'zdb', 'age': '1'}

例2

a = (('F',70),('i',105),('s',115),('h',104),('C',67))
print(type(a))dict3 = dict((('F',70),('i',105),('s',115),('h',104),('C',67)))   #元组转换字典
print(dict3)
<class 'tuple'>
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}

创建空字典

print(dict())
{}

字典生成式

公式: d = {item: price for item, price in zip(items, prices)}

items = ['Fruits', 'Books', 'Others']
prices = [96, 78, 85, 100]d = {item: price for item, price in zip(items, prices)}
print(d)
{'Fruits': 96, 'Books': 78, 'Others': 85}

zip():将两个列表对应位置的值括起来

list1=[3,2,1,6,5,4,9,9,9]
list2=[1,2,3,4,5,6]
print(zip(list1,list2))
print(list(zip(list1,list2)))
<zip object at 0x000001C3AF8CCB88>
[(3, 1), (2, 2), (1, 3), (6, 4), (5, 5), (4, 6)]

8.2 获取键对应的值:get()

1. 通过访问键得到值
例1

alien_0 = {'color':'green', 'points':5}
print(alien_0['color'])       #输出color对应的值
print(alien_0['points'])
green
5

例2

scores = {'张三':100, '李四':98, '王二':45}
print(scores['张三'])
100

.get()

  • 1.字典中有这个键则输出值
  • 2.字典没有这个键则输出none
  • 3.可以自定义没有这个键时输出的内容

例1

scores = {'张三':100, '李四':98, '王二':45}
print(scores.get('张三'))
print(scores.get('麻子'))
print(scores.get('麻子', '没有'))
100
None
没有

8.3 in, not in判断键是否在字典中

scores = {'张三':100, '李四':98, '王二':45}
print('张三' in scores)
print('麻子' not in scores)
True
True

8.4 增加键值对:fromkeys()、setdefault()、update()

1.直接增加键值对

例1:添加两个键

alien_0 = {'color':'green', 'points':5}
print(alien_0)alien_0['x_position'] = 0       #添加键-值对
alien_0['y_position'] = 25
print(alien_0)
{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}

例2:添加键和值

  • 给字典中没有的键赋予值就是添加键值对
  • 给字典中有的键赋予新值就是修改键所对应的值
dict4 = dict(name='zdb', 性别='男')
print(dict4)dict4['name'] = 'zz'
print(dict4)dict4['民族'] = '汉'
print(dict4)
{'name': 'zdb', '性别': '男'}
{'name': 'zz', '性别': '男'}
{'name': 'zz', '性别': '男', '民族': '汉'}

例3. 空字典中添加键-值对

alien_0 = {}alien_0['color'] = 'green'
alien_0['prints'] = 5
print(alien_0)
{'color': 'green', 'prints': 5}

2.fromkeys()创建键-值对
例1

dict1 = dict.fromkeys(range(5),'zdb')
print(dict1)
{0: 'zdb', 1: 'zdb', 2: 'zdb', 3: 'zdb', 4: 'zdb'}

例2

dict1 = {}
print(dict1.fromkeys((1,2,3)))
print(dict1.fromkeys((1,2,3),'number'))         #三个键对应的值一样
print(dict1.fromkeys((1,2,3),('one','two','three')))
print(dict1.fromkeys((1,3),'数字'))
{1: None, 2: None, 3: None}
{1: 'number', 2: 'number', 3: 'number'}
{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}
{1: '数字', 3: '数字'}

3.setdefault()添加键和值

a = {1:'one',2:'two',3:'three',4:'four'}   #字典没有顺序
a.setdefault('小白')   #添加键
print(a)a.setdefault(5,'five')  #添加键和值
print(a)
{1: 'one', 2: 'two', 3: 'three', 4: 'four', '小白': None}
{1: 'one', 2: 'two', 3: 'three', 4: 'four', '小白': None, 5: 'five'}

4.update()用字典A更新字典B的键值对

a = {1:'one',2:'two',3:'three',4:'four'}   # 字典没有顺序
b = {'小白':'狗'}
a.update(b)           # 用b更新a
print(a)
{1: 'one', 2: 'two', 3: 'three', 4: 'four', '小白': '狗'}



8.5 删除键值对:del语句、clear()、pop()、popitem()

1.del永久性删除,删除指定的键值对
例:

alien_0 = {'color':'green', 'points':5}
print(alien_0)del alien_0['points']     #删除键
print(alien_0)
{'color': 'green', 'points': 5}
{'color': 'green'}

2、.clear()清空字典,永久的,清空后为空字典

dict1 = dict.fromkeys(range(5),'zdb')
print(dict1)
dict1.clear()
print(dict1)
{0: 'zdb', 1: 'zdb', 2: 'zdb', 3: 'zdb', 4: 'zdb'}
{}

3. pop()删除键值对,永久的

a = {'a':'one', 'b':'two', 'c':'three', 'd':'four'}   #字典没有顺序
a.pop('b')
print(a)
{'a': 'one', 'c': 'three', 'd': 'four'}

4.popitem()删除最后一个键值对,永久的

a = {1:'one',2:'two',3:'three',4:'four'}   #字典没有顺序
print(a.popitem())    #输出最后一个
print(a)
(4, 'four')
{1: 'one', 2: 'two', 3: 'three'}

8.6 遍历键、值、键值对:keys()、values()、items()

1. 遍历键
方法一

scores = {'张三': 100, '李四': 98, '王二': 45}
for i in scores:print(i)
张三
李四
王二

方法二:keys()

favorite_language = {'jen':'python','sarah':'c','edward':'ruby','phil':'python'}for name in favorite_language.keys():    #两个变量随便取名 print(name.title())
Jen
Sarah
Edward
Phil

例2

favorite_language = {'jen':'python','sarah':'c','edward':'ruby','phil':'python'}friends = ['phil', 'sarah']
for name in favorite_language.keys():    #遍历键print(name.title())if name in friends:print("我朋友" + name.title() + "最喜欢的语言是:" +favorite_language[name].title() + '!')
Jen
Sarah
我朋友Sarah最喜欢的语言是:C!
Edward
Phil
我朋友Phil最喜欢的语言是:Python!

例3

scores = {'张三': 100, '李四': 98, '王二': 45}
keys = scores.keys()
print(list(keys))
['张三', '李四', '王二']

2.遍历值
方法一

scores = {'张三': 100, '李四': 98, '王二': 45}
for i in scores:print(scores[i])
100
98
45

方法二

scores = {'张三': 100, '李四': 98, '王二': 45}
for i in scores:print(scores.get(i))

方法三 :.values()

favorite_language = {'jen':'python','sarah':'c','edward':'ruby','phil':'python'}print('以下语言被提到过:')
for language in favorite_language.values():  #遍历所有的值print(language.title())
以下语言被提到过:
Python
C
Ruby
Python

3. 遍历键值对
方法一

scores = {'张三': 100, '李四': 98, '王二': 45}
for i in scores:print(i, scores[i], scores.get(i))
张三 100 100
李四 98 98
王二 45 45

方法二:.items():遍历所有的键-值对
例1:

user_0 = {'姓名': 'zdb','姓': 'z','名': 'db',}
for key, value in user_0.items():  # 两个变量随便取名print('Key:' + key)            # 拼接输出print('Value: ' + value)
Key:姓名
Value: zdb
Key:姓
Value: z
Key:名
Value: db

例2

favorite_language = {'jen': 'python','sarah': 'c','edward': 'ruby','phil':' python'}for name, language in favorite_language.items():    #两个变量随便取名print(name.title() + "'最喜欢的语言是:" +language.title() + '.')
Jen'最喜欢的语言是:Python.
Sarah'最喜欢的语言是:C.
Edward'最喜欢的语言是:Ruby.
Phil'最喜欢的语言是: Python.

8.7 字典、列表相互嵌套

1.在列表中存储字典:[{}, {}, {}]

alien_0 ={'color':'green', 'points':5}
alien_1 ={'color':'yellow', 'points':10}
alien_2 ={'color':'red', 'points':15}aliens = [alien_0, alien_1, alien_2]    #列表中嵌套字典for alien in aliens:print(alien)
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}

创建30个外星人

#创建一个用于存储外星人的空列表
aliens = []#创建30个绿色的外星人
for alien_number in range(30):       #0到29,循环30下new_alien = {'color':'green', 'points':5, 'speed':'slow'}aliens.append(new_alien)         #添加了30个外星人#显示当前五个外星人
for alien in aliens[:5]:             #循环5下print(alien)
print('...')#显示创建了多少个外星人
print("Total number of aliens: " + str(len(aliens)))
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
...
Total number of aliens: 30

将前三个外星人修改为黄色

#创建一个用于存储外星人的空列表
aliens = []#创建30个绿色的外星人
for alien_number in range(30):new_alien = {'color':'green', 'points':5, 'speed':'slow'}aliens.append(new_alien)for alien in aliens[0:3]:             #前三个if alien['color'] == 'green':     #修改颜色,速度,点数alien['color'] = 'yellow'alien['speed'] = 'medium'alien['points'] = 10#显示当前五个外星人
for alien in aliens[:5]:             #循环前五个print(alien)
print('...')#显示创建了多少个外星人
print("Total number of aliens: " + str(len(aliens)))
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}

2.在字典中存储列表:{[], [], []}
例1

#存储所点披萨的信息
pizza = {'crust':'thick','toppings':['mushrooms', 'extra cheese']      #列表在字典中}#概述所点的披萨
print("You ordered a " + pizza['crust'] + "-crust pizza" +"with the following toppings:")for topping in pizza['toppings']:                #遍历键topping所对应的值print('\t' + topping)
You ordered a thick-crust pizzawith the following toppings:mushroomsextra cheese

例2

favorite_languages = {'jen':['python', 'ruby'],'sarah':['c'],'edward':['ruby', 'go'],'phil':['python', 'haskell'],}for name, languages in favorite_languages.items():    #两个变量随便取名print('\n' + name.title() + "'s favorite languages are:")for language in languages:print("\t" + language.title())
Jen's favorite languages are:PythonRubySarah's favorite languages are:CEdward's favorite languages are:RubyGoPhil's favorite languages are:PythonHaskell

在字典中存储字典:{{}, {}, {}}

users = {'aeinstein':{                    #字典在字典中   'first':'albert','last':'einstein','location':'princeton',},'mxurie':{'first':'marie','last':'curie','location':'paris',},}for username, user_info in users.items():     #遍历键-值对print("\nUsername: " + username)          #输出字典中的字典full_name = user_info['first'] + ' ' + user_info['last']location = user_info['location']print("\tFull name: " + full_name.title())print("\tlocation: " + location.title())
Username: aeinsteinFull name: Albert Einsteinlocation: PrincetonUsername: mxurieFull name: Marie Curielocation: Paris

8.8 字典中索引键对应的值:.index()

brand = ['甲','乙','丙']
slogan = ['a','b','c']
print('甲是什么:',slogan[brand.index('甲')])
print('乙是什么:',slogan[brand.index('乙')])
print('丙是什么:',slogan[brand.index('丙')])
甲是什么: a
乙是什么: b
丙是什么: c

8.9 备份字典:copy()

改变原来的,等号=赋值的会改变,但copy()的永远不变

id()
查询ID,用来判断是否改变

例1: 不管怎么改变a, c永远不变;重新等号赋值a,不影响最初等号赋值的b

a = {'姓名':'zdb'}
b_fuzhi = a         # 赋值,要变两个都变,ID相同
c_copy = a.copy()   # 与a,b的ID不同
print(id(a))           # 原来的
print(id(b_fuzhi))     # 与a的一样
print(id(c_copy))      # 与a的不一样a = {}                 # 再次赋值改变a
print(a)               # a现在是空字典
print(b_fuzhi)         # 与上面的b_fuzhi相同
print(c_copy)          # 与上面的c_copy相同
print(id(a))           # 跟最初始的a相比,变了
print(id(b_fuzhi))     # 与上面的b_fuzhi相同
print(id(c_copy))      # 与上面的c_copy相同
1585541151464
1585541151464
1585541151544{}                    #变了
{'姓名': 'zdb'}    #没变
{'姓名': 'zdb'}    #没变
1585541152584   #变了
1585541151464   #没变
1585541151544   #没变

例2:这里用clear清除a
不管怎么改变a,c永远不变;clear清除a,这里之前等号赋值的b也会被清除
只有重新赋值a才会变ID,用clear清除a,a前后的ID不会改变

a = {'姓名':'zdb'}
b = a          # 赋值,要变两个都变,ID相同
c = a.copy()   # 与a、b的ID不同
print(id(a))   # 原来的
print(id(b))   # 与a的一样
print(id(c))   # 与a的不一样a.clear()      # 清除a
print(a)       # 空字典
print(b)       # 空字典
print(c)       # 与上面的c相同,不是空的
print(id(a))   # 与最初始的a没变
print(id(b))   # 与最初始的b没变,还与a相同
print(id(c))   # 死也不变
2709389179624
2709389179624
2709389179704         #copy的内容不变{}
{}                    #赋值的也清除了
{'姓名': 'zdb'}    #copy的没变 
2709389179624
2709389179624        #与a原来的ID一直一样
2709389179704

例3a等号赋值给b,不管是a还是b增加或减少元素,另外一个都会跟着改变,但是ID永远不变

a = {'姓名':'zdb'}    #字典里面没有顺序
b = a            # 等号赋值
c = a.copy()     # 这里就不在举例这个了,永远不变
print(id(a))     # 原来的
print(id(b))     # 与a的相同b[2] = 'z'       #b增加元素,a也会增加
print(a)
print(b)
print(id(a))
print(id(b))a[3] = '猪'       #a增加元素,b也会增加
print(a)
print(b)
print(id(a))
print(id(b))a.pop(3)         #删除a的键3,b跟着删除
print(a)
print(b)
print(id(a))
print(id(b))a.pop(2)        #删除a的键2,b跟着删除
print(a)
print(b)
print(id(a))
print(id(b))
1734662028008
1734662028008{'姓名': 'zdb', 2: 'z'}
{'姓名': 'zdb', 2: 'z'}
1734662028008
1734662028008{'姓名': 'zdb', 2: 'z', 3: '猪'}
{'姓名': 'zdb', 2: 'z', 3: '猪'}
1734662028008
1734662028008{'姓名': 'zdb', 2: 'z'}
{'姓名': 'zdb', 2: 'z'}
1734662028008
1734662028008{'姓名': 'zdb'}
{'姓名': 'zdb'}
1734662028008
1734662028008



相关文章:

Python入门笔记(三)

文章目录 第八章 字典dict8.1 创建字典&#xff1a;{}、dict()、字典生成式、zip()8.2 获取键对应的值&#xff1a;get()8.3 in&#xff0c; not in判断键是否在字典中8.4 增加键值对&#xff1a;fromkeys()、setdefault()、update()8.5 删除键值对&#xff1a;del语句、clear(…...

PostgreSQL 任意命令执行漏洞(CVE-2019-9193)

记一次授权攻击通过PostgreSql弱口令拿到服务器权限的事件。 使用靶机复现攻击过程。 过程 在信息收集过程中&#xff0c;获取到在公网服务器上开启了5432端口&#xff0c;尝试进行暴破&#xff0c;获取到数据库名为默认postgres&#xff0c;密码为1 随后连接进PostgreSql …...

使用tgz包下载安装clickhouse低版本

1.下载安装包 官方下载地址&#xff1a;https://packages.clickhouse.com/tgz/stable 阿里云下载地址&#xff1a;clickhouse-tgz-stable安装包下载_开源镜像站-阿里云 共需要下载四个文件 clickhouse-common-static-20.3.10.75.tgz clickhouse-common-static-dbg-20.3.10.7…...

外包功能测试干了6个月,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;23年通过校招进入武汉某软件公司&#xff0c;干了差不多6个月的功能测试&#xff0c;今年中秋&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我就在一个外包企业干了6个月的功…...

动态规划和贪心算法

目录 动态规划和贪心算法 动态规划 贪心算法 两者之间的区别 动态规划和贪心算法 是两种经典的算法设计策略,它们各自具有独特的特点和适用场景。 动态规划 动态规划是一种将复杂问题分解为更简单子问题的求解方法。它特别适用于那些具有重叠子问题和最优子结构特性的问…...

python爬虫--tx动漫完整信息抓取

python爬虫--tx动漫完整信息抓取 一、采集主页信息二、采集详情页信息三、完整代码一、采集主页信息 先看一下采集到的信息,结果保存为csv文件: 打开开发者工具,找到数据接口。 使用xpath提取详情页url。 二、采集详情页信息 如上图所示,使用xpath提取详情页的标题、作…...

《使用Java做爬虫和使用python做爬虫哪个好》

使用Java做爬虫和使用python做爬虫哪个好 Java 和 Python 都是非常出色的编程语言&#xff0c;在爬虫领域各有其优势&#xff0c;具体使用哪种语言更好取决于多种因素&#xff1a; 一、开发效率 1. Python Python 以其简洁、易读的语法而闻名。在爬虫开发中&#xff0c;有许…...

如果我想开发一个APP,需要准备哪些材料呢

开发一个APP需要准备的材料相对复杂&#xff0c;涵盖了公司资质、技术资源、支付接口以及第三方服务等多个方面。以下是一份详细的材料清单&#xff1a; 一、公司资质证明 营业执照&#xff1a;需要提供公司的营业执照副本&#xff0c;用于申请企业支付、域名备案、APP上架及…...

告别论文初稿焦虑!ChatGPT让你轻松完成写作!

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 在面对繁琐的论文写作时&#xff0c;很多人都会遇到无从下手的困惑&#xff0c;尤其是论文初稿阶段&#xff0c;往往需要大量的时间来组织思路和编写内容。然而&#xff0c;随着AI技术的发展&#xff0c;像…...

mongodb 数据迁移,亲测成功!

mysql进行数据迁移&#xff0c;最简单的不过是导出sql&#xff0c;然后在运行sql&#xff0c;数据也自然迁移过去了。 可是mongodb里&#xff0c;我们存储的是文件&#xff0c;是怎么做到的呢&#xff0c;当我在翻阅网上博客的时候&#xff0c;并没有发现有这方面的顾虑。 当…...

如何使用ssm实现疫情居家办公OA系统

TOC 10902ssm疫情居家办公OA系统 系统概述 进过系统的分析后&#xff0c;就开始记性系统的设计&#xff0c;系统设计包含总体设计和详细设计。总体设计只是一个大体的设计&#xff0c;经过了总体设计&#xff0c;我们能够划分出系统的一些东西&#xff0c;例如文件、文档、数…...

深入了解 MySQL 中的 JSON_CONTAINS

深入了解 MySQL 中的 JSON_CONTAINS MySQL 5.7 及更高版本引入了对 JSON 数据类型的支持&#xff0c;使得在数据库中存储和查询 JSON 数据成为可能。在这些新功能中&#xff0c;JSON_CONTAINS 函数是一个非常有用的工具&#xff0c;允许我们检查一个 JSON 文档是否包含特定的值…...

宝藏推荐:精选十款知识库搭建软件

当今这个信息爆炸的时代&#xff0c;高效地管理和利用知识成为了各行各业追求的目标。无论是企业内部的协作&#xff0c;还是对外提供的信息服务&#xff0c;一个强大的知识库都是不可或缺的。为了帮助大家更好地守护和利用知识宝藏&#xff0c;以下是精选的十款知识库搭建软件…...

go语言接口设计三国人物

题目 请设计一个接口Person&#xff0c;然后设计两个结构体实现Person接口&#xff0c;这两个结构体都代表三国时代的名人。Person接口中有一个方法&#xff0c;该方法输出一句最能代表该人物特点的话。 程序 package main import ("fmt") type Person interface …...

day-63 优质数对的总数 II

思路 nums1[i] 可以被 nums2[j] * k 整除,所以nums[i]/k的所有因子都符合条件&#xff0c;问题转换为遍历nums1,统计nums[i]/k的因子出现次数&#xff0c;然后遍历nums2&#xff0c;如果nums2[i]是某一个因子&#xff0c;将其出现次数加入答案中即可 解题过程 利用哈希表统计出…...

基于 Prometheus+Grafana+Alertmanager 搭建 K8S 云监控告警平台(附配置告警至QQ、钉钉)

文章目录 一、机器规划二、部署安装 node-exporter、prometheus、Grafana、kube-state-metrics1、创建 monitor-sa 命名空间2、安装node-exporter组件2.1、说明2.2、应用资源清单2.3、通过node-exporter采集数据 3、k8s 集群中部署 prometheus3.1、创建一个 sa 账号3.2、将 sa …...

C++ | Leetcode C++题解之第461题汉明距离

题目&#xff1a; 题解&#xff1a; class Solution { public:int hammingDistance(int x, int y) {int s x ^ y, ret 0;while (s) {s & s - 1;ret;}return ret;} };...

ElasticSearch备考 -- Update by query Reindex

一、题目 有个索引task&#xff0c;里面的文档长这样 现在需要添加一个字段all&#xff0c;这个字段的值是以下 a、b、c、d字段的值连在一起 二、思考 需要把四个字段拼接到一起&#xff0c;组成一个新的字段&#xff0c;这个就需要脚本&#xff0c; 这里有两种方案&#xff…...

从认识String类,到走进String类的世界

作为一个常用的数据类型&#xff0c;跟随小编一同进入String的学习吧&#xff0c;领略String的一些用法。 1. 认识 String 类 2. 了解 String 类的基本用法 3. 熟练掌握 String 类的常见操作 4. 认识字符串常量池 5. 认识 StringBuffer 和 StringBuilder 一&#xff1a;…...

Vue入门-指令修饰符-@keyup.enter

指令修饰符&#xff1a; 通过"."指明一些指令后缀&#xff0c;不同后缀封装了不同的处理操作 ->简化代码 ①按键修饰符 keyup.enter ->键盘回车监听 ".enter"if(e.keyenter){} //".enter"用来简化代码 demo&#xff1a; <!DOCTYPE…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...