python迭代字典值(如果一个键具有一个或多个值)

我有一个程序来查找图像的方向。为了使其在任何其他方向上都是直的图像,我使用其旋转pred_val使用Pytorch旋转它,因此我将其创建为字典,其中pred_valaskey和图像名称为value我部分实现了它,但是作为一个例外,我知道如果一个或多个图像具有相同的图像,那么pred_val只会分配最后一个图像名称,因此我得出这样的结论:

for k, v in dictImgNamValues.items(): #k-pred,v-image
    if ',' in v:
        for v in v.split(','):
            imname = v[:-4]
            print(k,v)
            if os.path.isfile(image_folder+'/'+v):
                if k == '0':
                    print('a')
                    image = cv2.imread(rot_img+'/'+file1+'/'+v)
                    rotImg = cv2.rotate(image, cv2.ROTATE_90_COUNTERCLOCKWISE)
                    cv2.imwrite(save_path+'/'+imname+'.png',rotImg)
                elif k == '1':
                    print('b')
                    image = cv2.imread(rot_img+'/'+file1+'/'+v)
                    rotImg = cv2.rotate(image, cv2.ROTATE_180)
                    cv2.imwrite(save_path+'/'+imname+'.png',rotImg)
                elif k =='2':
                    print('c')
                    image = cv2.imread(rot_img+'/'+file1+'/'+v)
                    rotImg = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)
                    cv2.imwrite(save_path+'/'+imname+'.png',rotImg)
                elif k=='3':
                    print('d')
                    image = cv2.imread(rot_img+'/'+file1+'/'+v)
                    cv2.imwrite(save_path+'/'+imname+'.png',image)        
    imname = v[:-4]
    print(k,v)
    if os.path.isfile(image_folder+'/'+v):
        if k == '0':
            print('a')
            image = cv2.imread(rot_img+'/'+file1+'/'+v)
            rotImg = cv2.rotate(image, cv2.ROTATE_90_COUNTERCLOCKWISE)
            cv2.imwrite(save_path+'/'+imname+'.png',rotImg)
        elif k == '1':
            print('b')
            image = cv2.imread(rot_img+'/'+file1+'/'+v)
            rotImg = cv2.rotate(image, cv2.ROTATE_180)
            cv2.imwrite(save_path+'/'+imname+'.png',rotImg)
        elif k =='2':
            print('c')
            image = cv2.imread(rot_img+'/'+file1+'/'+v)
            rotImg = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)
            cv2.imwrite(save_path+'/'+imname+'.png',rotImg)
        elif k=='3':
            print('d')
            image = cv2.imread(rot_img+'/'+file1+'/'+v)
            cv2.imwrite(save_path+'/'+imname+'.png',image)

看起来如此Elaborative方法字典还有其他方法可以将其缩短吗?

go2nirvana

据我了解,在您的字典中-只是一个存储空间?那为什么不使用元组列表呢?我看不到您使用dict的任何特定功能,因此可以将其替换为更好的选项。

说:

dictImgNamValues = [(<pred_val1>, <nam1>), (<pred_val2>, <name2>), ...]

然后,您的代码将几乎相同。我对其进行了重构以减少代码重复。imname = v[:4]虽然不知道为什么你写了两次之后仍然有份。Ayway:

rotation = {'0': cv2.ROTATE_90_COUNTERCLOCKWISE,
            '1': cv2.ROTATE_180,
            '2': cv2.ROTATE_90_CLOCKWISE}

for pred_val, name in dictImgNamValues: #k-pred,v-image
    for name in name.split(','):
        imname = name[:-4]
        if os.path.isfile(image_folder +'/' + name):
            image = cv2.imread(rot_img +'/' + file1 +'/' + name)
            if pred_val in rotation:
                image = cv2.rotate(image, rotation[pred_val])
            cv2.imwrite(save_path + '/' + imname + '.png', image)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在字典中为一个键添加具有多个值的列表或字典-Python

Python:具有一个键和多个值的字典:如何获取具有相同SET值的键列表?

生成具有一个键和多个值的字典。值应为列表

在 Python 中迭代一个字典键的多个值

Python 3:如何创建一个包含多个字典的词典,并且键也具有多个值?

从字典键返回一个值,在python中有多个值

将具有一个键和多个值的字典转换为 Pandas 数据框

将具有一个键和多个值的字典转换为数据框

如何从每个键具有多个值的字典中写入一个csv文件?

有没有办法将值存储在一个具有多个可选值的字典键中?

在 Python 中的第一个键上具有默认值的嵌套字典

如果一个类具有多个属性或一个属性作为具有多个键的字典,Python3

创建一个对一个键具有多个值的数据库

如何找到索引,如果在字典中的字典中有一个键的多个值?

将多个具有相同键的字典合并到一个包含值总和的字典中

如何合并三个字典,使一个键具有多个单独的列表值

python字典具有一个键的多个属性。如何在这些属性之一中找到最小值并返回键?

在字典中为一个键存储多个值

字典中一个键的多个值

具有多个值和一个热编码(Python,Pandas)的数据帧相同的键?

如果另一个单元格具有多个值之一,则返回一个值

Python-如何使用具有一个键和两个值的循环更新字典?

如何在python中的字典中具有两个键和一个值

在多个值中查找具有一个值的键

Python从字典中删除一个值而不是键

PHP数组(如果具有多个X值),则返回最后一个Y值

多个插入与一个具有多个值的插入

如何将具有相同键的字典的值从字典列表中合并为一个值?

将HashMap列表检索到另一个列表中,一个键具有多个值