python - 有没有更 Pythonic 的方式来处理字典?
问题描述
我正在利用这样一个事实,即字典中的 python >= 3.7 元素是按插入顺序检索的。
我想创建一个字典,其中第一个跳过项目包含零;之后,他们从主字典中获取相关值
dict_1 = {
'a1' : 11,
'a2' : 12,
'a3' : 13,
'b1' : 14,
'b2' : 15,
'c1' : 16,
}
skip = 3
dict_2 = {}
for item in range(skip):
dict_2[str(item)] = 0
index = 0
for key, item in dict_1.items():
index += 1
if index > skip:
dict_2[key] = item
print(dict_2)
{'0':0,'1':0,'2':0,'b1':14,'b2':15,'c1':16}
为免生疑问,dict_2 中的键与 dict_1 中项目 < 跳过的键不同。
这可以满足我的要求,但它不优雅。我可以采取更蟒蛇的方法吗?
解决方案
您可以使用islice
来避免if
检查:
from itertools import islice
dict_2 = {str(item): 0 for item in range(skip)}
for key, item in islice(dict_1.items(), skip, None):
dict_2[key] = item
或者,将两个选项组合到一个循环中,使用enumerate
:
for i, (key, value) in enumerate(dict_1.items()):
if i < skip:
dict_2[str(i)] = 0
else:
dict_2[key] = value
推荐阅读
- php - 在 Woocommerce 电子邮件模板中获取用户信息
- java - 如何将xml bean适配到spring boot
- vaadin - Vaadin:Maven:不在生产模式下启动。找不到捆绑清单文件“frontend://vaadin-flow-bundle-manifest.json”
- html - 无论图像和文本有多长,如何使 Div 具有相同的高度?
- python - Tensorflow:如何在 tensorboard 中查看检查点?
- html - 父块元素底部的额外空间
- node.js - 在 Angular 7 客户端中获取 Express 应用程序的响应标头
- jquery - JQuery, How to diasable dropdownlists value when other dropdownlist value that selected
- reactjs - 笑话:动作创作者问题
- php - 苏鲁与 Symfony 4