如何在Python中迭代字典的同时获取当前迭代次数最优的方法

2024-06-01 00:55:41 发布

您现在位置:Python中文网/ 问答频道 /正文

实现以下功能的最佳方法是什么:

i= 0
imagesdict = dict()
for image in list(glance.images.list()):
    d = image._info
    imagesdict[i] = d
    i=i+1
return json.dumps(imagesdict)

Tags: 方法inimage功能infojsonforreturn
3条回答

您可以在此处使用列表而不是dict:

json.dumps([image._info for image in glance.images.list()])

如果无法更改输出格式(如果输出格式被超出您控制范围的代码使用),则要获取一个传递相同信息的json对象:

json.dumps(dict(enumerate(image._info for image in glance.images.list())))

只需使用^{}在迭代iterable时获取当前索引,如下所示

for i, image in enumerate(glance.images.list()):
    imagesdict[i] = image._info

更好的是,你可以使用字典理解,像这样

json.dump({i: image._info for i, image in enumerate(glance.images.list())})

这似乎有点奇怪,为什么你要创建一个字典,如果你是所有的关键点?为什么不使用一个列表并索引每个元素呢?你知道吗

不管怎样,您可以使用字典理解来压缩它:

imagesdict = {i: image._info for i, image in enumerate(glance.images.list())}

enumerate函数的作用是接收一个列表,并返回一个新的列表,将索引与之捆绑在一起。所以,如果我做enumerate(['a', 'b', 'c']),输出将是[(0, 'a'), (1, 'b'), (2, 'c')]。你知道吗

所以,一旦我们做了enumerate(glance.images.list()),下一步就是把它变成一个实际的字典。你可以使用一个普通的for循环,或者更好的,一个字典理解,在一行中得到最终的dict。你知道吗

相关问题 更多 >