python-3.x - .items() 循环与 if 的组合
问题描述
如何通过 dict.items()
和 if 条件组合循环?它适用于列表理解,我知道我可以遍历键并使用 获取项目test_dict[key]
,但是在使用.items()
循环时可以吗?
test_dict = {'a':1,'b':2,'c':3}
skip = ['b']
[print(key,item) for key,item in test_dict.items() if key not in skip] #works
# for key,item in test_dict.items() if key not in skip:
# print(key,item)
解决方案
内联if
语句存在于list
理解中以允许表达语法,例如:
for key,item in test_dict.items():
if key not in skip:
# do stuff
在他们之中。
根据python语法,没有办法将语句与标准循环本身表达if
在同一行。for
来自https://docs.python.org/3/reference/grammar.html
for_stmt:
| 'for' star_targets 'in' ~ star_expressions ':' [TYPE_COMMENT] block [else_block]
| ASYNC 'for' star_targets 'in' ~ star_expressions ':' [TYPE_COMMENT] block [else_block]
wherestar_expressions
指的是多个expressions
. 虽然一个expression
可以有
disjunction 'if' disjunction 'else' expression
这是指实际dict.items()
情况,仅在循环入口处进行评估。如:
for item in test_dict.values() if True else [1, 2, 3]:
您还可以看到for_if_clauses
仅与推导式和生成器表达式有关,因为它们仅出现在这些定义中。
listcomp:
| '[' named_expression ~ for_if_clauses ']'
genexp:
| '(' named_expression ~ for_if_clauses ')'
setcomp:
| '{' named_expression ~ for_if_clauses '}'
dictcomp:
| '{' kvpair for_if_clauses '}'
推荐阅读
- java - 如何在 Java 中打印智能数组?
- server-side - Tensorflow.js 不断再训练
- java - PDF 文件在三星 j6 中无法访问,但可以在其他安卓手机中访问
- python - 如何从文件夹 discord bot 播放 .mp3 文件
- php - Laravel 7,仅使用身份验证保护
- python - 如何查找包含日期值的数据框行?
- python - 如何在 numba.jit 函数中测量时间?
- r - 将样本的 qqplot 与 R 中的参考概率分布进行比较
- python - 图像到文本 - Pytesseract 与 Windows 上的数字作斗争
- swift - 未连接 VC 的委托和协议