python - 如何将此for循环转换为dict理解?
问题描述
我可以做到这一点
mydict = {}
for a in range(0,6):
mydict[a] = []
print (mydict)
#{0: [], 1: [], 2: [], 3: [], 4: [], 5: []}
问题是我如何通过 dict 理解来实现这一点?
编辑:
d = {level: [] for level in range(1, level + 1)}
for each_level in d:
d[each_level] = [ExampleClass(1, 1)
for _ in range(5)]
很抱歉没有把我从一开始就有的东西拿出来,我认为这不会有太大帮助。
这就是我所拥有的,它做了我想要的,但我想知道是否有一种方法可以将所有这些缩短到一行左右。
最后,我想要类似的东西:
d = {level: [] for level in range(1, level + 1), [ExampleClass(1, 1) for _ in range(5)]
解决方案
像这样:
d = {a:[] for a in range(6)}
不要将名称dict
用于您自己的变量,您将隐藏内置名称dict
。
另请注意,如果您不向 提供start
参数range
,则默认为0
。
您可能还想查看defaultdict
from模块,而不是自己用空列表collections
初始化 a 。dict
演示:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d[0]
[]
>>> d[1]
[]
仅当您第一次访问密钥时才会实例化这些列表。
>>> d
defaultdict(<class 'list'>, {0: [], 1: []})
编辑:~跟进~
我没有你的示例类,但你应该能够从这个演示中学习必要的 synatx。slice
将介入您的ExampleClass
.
>>> ExampleClass = slice
>>> d = {a:[ExampleClass(1, 1) for _ in range(5)] for a in range(6)}
>>> d
{0: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)], 1: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)], 2: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)], 3: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)], 4: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)], 5: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)]}
推荐阅读
- javascript - Firebase 功能运行速度极慢
- c++ - 使用静态成员时有关 C++ 中内存分配的问题
- kotlin - Kotlin 扫描器 - 验证 nextLine() 用户输入
- c++ - 如何检查 char 编码是否为 ASCII?
- c# - Npgsql.EntityFrameworkCore.PostgreSQL.Infrastructure.Internal.NpgsqlOptionsExtension 类型中的方法“get_Info”没有实现
- node.js - 从 Rest API 中的 repo 获取数据
- sql - 在 Case 表达式中使用子查询
- html - 为什么我不能在 div 中设置离子按钮的样式
- android - 在 null 上调用了方法“文本”
- python - 如何停止 lightgbm 的日志输出?