python基础-if语句、字典

6603次阅读 132人点赞 作者: WuBin 发布时间: 2024-06-18 14:48:10
扫码到手机查看

if

基本格式

car = 'bmw'
if(car == 'audi'):
   print('yes')
else:
   print('no')

如果多个条件

num = 10
if(num > 1 and num <= 100):
   print('yes')
py中没有&&,&&相当于and,||相当于or

使用in判断某一值是否在列表中

list = list(range(1, 101))
if(100 in list):
   print('yes')
else:
   print('no')
// yes

not in判断 特定值是不是没有包含在列表中

list = list(range(1, 101))
if 102 not in list:
   print('yes')
else:
   print('no')

if-elif-else

age = 12
if age < 4:
   print('<4')
elif age < 18 and age > 4:
   print('<18 > 4')
else:
   print('>18')

判断列表是否为空:(PY没有 !emptyList 会报错

emptyList = []
if emptyList:
    print('not empty')
else:
    print('empty')

当 布尔型的变量 判断的时候,只有使用not 不能用 !,如下:

注意:False正是 Python 布尔型的标准写法,pY中布尔型(Boolean)的两个值必须严格大写,即True(表示 “真”)和False(表示 “假”)—— 首字母大写,其余字母小写,这是 Python 的语法规则,不能修改。False:是 Python 内置的布尔值,代表 “假”,符合语法规则;false/FALSE:会被 Python 当作 “未定义的变量名”,如果直接使用会报错 NameError: name 'false' is not defined。
isboolvar = False

if not isboolvar:
  print('not not ')

三元表达式

比如我在使用playwright进行爬取DOM结构的时候:

el_play_icon= el_cover.query_selector('play-icon')is_video= el_play_icon ?True:False错误

上面写法是不对的

py的三元表达式:结果1 if 条件 else 结果2
el_play_icon= el_cover.query_selector('.play-icon')(类选择器)
is_video=True if el_play_icon else False

字典

定义字典(对象)

alien = {
    'color': 'green',
    'point': 5
}
print(alien['color'])
print(alien['point'])
initial_state = {
    'note': {
        'note_id': 1
    }
}

initial_state.get("note", {}).get("note_id")

字典还可以使用get(‘键名’,默认值)方法是一种安全获取嵌套字典中值的方法,和直接使用initial_state['note']['note_id'] 相比,它的优势在于避免因键不存在而抛出异常。

具体说明:

  1. dict.get(key, default)方法这是 Python 字典的内置方法,作用是:

    • 尝试获取字典中key对应的值。
    • 如果key不存在,则返回default参数指定的默认值(默认是None)。
  2. 嵌套使用的原因initial_state.get("note", {}).get("note_id")相当于分两步安全获取:

    • 第一步:initial_state.get("note", {})尝试获取initial_state中的note键。如果note不存在(比如接口返回数据结构变化),则返回空字典{},避免后续操作报错。
    • 第二步:.get("note_id")从第一步的结果(可能是note对应的字典,也可能是空字典)中获取note_id。如果note_id不存在,返回None,同样不会报错。
    • 直接使用initial_state['note']['note_id']时,若note键不存在,会直接抛出KeyError异常,导致程序中断。
    • get方法的嵌套使用是一种 “防御性编程”,即使中间某个键不存在,也能优雅地返回默认值(如None),保证程序继续运行。
# 情况1:使用 get 方法(安全)
initial_state = {}  # 假设没有 'note' 键
note_id = initial_state.get("note", {}).get("note_id")  # 返回 None,无异常

# 情况2:直接取值(不安全)
initial_state = {}
note_id = initial_state['note']['note_id']  # 抛出 KeyError: 'note'

在解析接口返回的复杂字典(尤其是结构可能变化的数据)时,推荐使用get方法嵌套取值,提高代码的健壮性。

给字典新增键值对

alien['x'] = 23
alien['y'] = 'ok'
print(alien)
// {'color': 'green', 'point': 5, 'x': 23, 'y': 'ok'}

删除某个键值对

del alien['point'];
print(alien)

遍历字典

for (key, value) in alien.items():
    print( key + ':' + str(value) )
注意!如果值是数字,需要转化为字符串才能使用+拼接
for key, value in alien.items():

也可以不要括号

返回的键值对顺序与存储顺序可能不同!获取字典元素的顺序是不可预测的!

仅遍历字典中的键 key

for key in alien.keys():
    print( key )

keys方法返回字典中所有键组成的列表

keysList = alien.keys()
print(keysList)
// dict_keys(['color', 'point', 'x', 'y'])

按顺序遍历字典中所有键

for name in sorted(alien.keys()):
    print(name)

这里使用函数sorted() 获得按特定顺序排列的键列表的副本,输出前对列表先进行排序

获取值列表,不包含键的信息

for val in alien.values():
    print(val)

当获得的values有太多重复项,需要对值列表进行去重,可以使用set()集合,集合类似于列表,但是每个元素都必须是独一无二的

for val in set(alien.values()):
    print(val)

使用set对获得的值列表去重

将字典嵌套进列表中

ages = range(1, 5)
objs = []
for age in ages:
    obj = {
        'age' : age,
        'name' : 'wubin-work' + str(age)
    }
    objs.append(obj)
print( objs )

输出结果

[{'age': 1, 'name': 'wubin-work1'}, {'age': 2, 'name': 'wubin-work2'},..., {'age': 4, 'name': 'wubin-work4'}]

字典中也能存储列表

obj = {
    'age': 14,
    'family': ['dad', 'mom', 'son']
}

字典中也能存储字典,就像JS的对象嵌套一样。在此就不演示了。

点赞 支持一下 觉得不错?客官您就稍微鼓励一下吧!
关键词:if
推荐阅读
  • python基础-操作列表和迭代器

    python基础笔记-操作列表和迭代器的相关方法

    6611次阅读 158人点赞 发布时间: 2024-06-13 13:26:27 立即查看
  • uniapp实现被浏览器唤起的功能

    当用户打开h5链接时候,点击打开app若用户在已经安装过app的情况下直接打开app,若未安装过跳到应用市场下载安装这个功能在实现上主要分为两种场景,从普通浏览器唤醒以及从微信唤醒。

    11764次阅读 794人点赞 发布时间: 2022-12-14 16:34:53 立即查看
  • PHP

    【正则】一些常用的正则表达式总结

    在日常开发中,正则表达式是非常有用的,正则表达式在每个语言中都是可以使用的,他就跟JSON一样,是通用的。了解一些常用的正则表达式,能大大提高你的工作效率。

    15164次阅读 624人点赞 发布时间: 2021-10-09 15:58:58 立即查看
  • 【中文】免费可商用字体下载与考证

    65款免费、可商用、无任何限制中文字体打包下载,这些字体都是经过长期验证,经得住市场考验的,让您规避被无良厂商起诉的风险。

    15533次阅读 1238人点赞 发布时间: 2021-07-05 15:28:45 立即查看
  • Vue

    Vue3开发一个v-loading的自定义指令

    在vue3中实现一个自定义的指令,有助于我们简化开发,简化复用,通过一个指令的调用即可实现一些可高度复用的交互。

    18349次阅读 1475人点赞 发布时间: 2021-07-02 15:58:35 立即查看
  • JS

    关于手机上滚动穿透问题的解决

    当页面出现浮层的时候,滑动浮层的内容,正常情况下预期应该是浮层下边的内容不会滚动;然而事实并非如此。在PC上使用css即可解决,但是在手机端,情况就变的比较复杂,就需要禁止触摸事件才可以。

    16532次阅读 1332人点赞 发布时间: 2021-05-31 09:25:50 立即查看
  • Vue

    Vue+html2canvas截图空白的问题

    在使用vue做信网单页专题时,有海报生成的功能,这里推荐2个插件:一个是html2canvas,构造好DOM然后转canvas进行截图;另外使用vue-canvas-poster(这个截止到2021年3月...

    32199次阅读 2528人点赞 发布时间: 2021-03-02 09:04:51 立即查看
  • Vue

    vue-router4过度动画无效解决方案

    在初次使用vue3+vue-router4时候,先后遇到了过度动画transition进入和退出分别无效的情况,搜遍百度没没找到合适解决方法,包括vue-route4有一些API都进行了变化,以前的一些操...

    28203次阅读 2181人点赞 发布时间: 2021-02-23 13:37:20 立即查看
交流 收藏 目录