访问特定项目

时间:2018-01-09 23:57:48

标签: python tuples

我有以下图片:

im1 = cv2.imread(root + '/' + '1.jpg')
im1_file = '1.jpg'
img1 = (im1,im1_file)

im2 = cv2.imread(root + '/' + '2.jpg')
im2_file = '2.jpg'
img2 = (im2,im2_file)

然后我将图像添加到pairs列表中,如下所示:

pair = (img1,img2)
pairs.append(pair)

如何访问每对im_fileimg1中的文件名(即img2)?

2 个答案:

答案 0 :(得分:0)

每当您开始使用编号变量时,请使用列表。

您可以一次性存储文件名,然后可以从该列表中读取文件。

import os

root = '/'
files = ['1.jpg', '2.jpg']
images = [cv2.imread(os.path.join(root, f) for f in files)]

例如,您可以使用images[0]访问特定项目。

如果您因任何原因需要加入列表,可以zip(files, images)

答案 1 :(得分:0)

您可以使用简单的元组索引来获取文件名(确实是元组中的第二个或1个索引元素)

>>> img1[1]
'1.jpg'

或作为集合:

>>> for pair in pairs:
...     print(pair[1])
1.jpg
2.jpg

但是你可能想考虑在这里使用namedtuples

from collections import namedtuple

ImageInfo = namedtuple("ImageInfo", "data name")

img1 = ImageInfo(im1, im1_file)
img2 = ImageInfo(im2, im2_file)

这使您的界面使用

更好一点
>>> img1.name
'1.jpg'

>>> for pair in pairs
...     print(pair.name)
1.jpg
2.jpg

(在完全公开中,我倾向于过度设计我的数据结构,并且这里的命名元组可能有点过于沉重。取决于上下文。不知道这一点,我倾向于过度复杂化.YMMV。)