如何使用 Python 处理带中断的双数组?

How to process double array with break using Python?

我想处理一个数组。这是我之前的问题。

但是我有另外一个案例,我参考了那个答案,但我仍然可以得到我期望的结果。 是这样的

情况1
Folder = "D:\folder"
Name = ['gadfg5', '546sfdgh']
Ver = [None, 'hhdt5463']
Default = {'gadfg5': '6754435'}
案例二
Folder = "D:\folder"
Name = ['gadfg5', '546sfdgh']
Ver = [None, 'None']
Default = {'gadfg5': '6754435', '546sfdgh': '98769786'}
案例三
Folder = "D:\folder"
Name = ['gadfg5', '546sfdgh']
Ver = [g675436g, 'hhdt5463']
Default = {}

这是我试过的:

for dn, dr, key in zip(Name, Ver, Default):
        if dr is None:
            Path = os.path.join(Folder, dn, Default[key])
            print("None",Path)
        else:
            Path = os.path.join(Folder, dn, dr)
            print("Not None", Path)

CASE 3的输出是empty。但我期望输出应该是:

D:\folder\gadfg5\g675436g
D:\folder6sfdgh\hhdt5463

CASE 2 的输出与我的预期一样是正确的:

D:\folder\gfg54435
D:\folder6sfdgh769786

CASE 1的输出只有returns一条路径,像这样:

D:\folder\gadfg554435

但我期望输出应该是这样的:

 D:\folder\gadfg554435
 D:\folder6sfdgh\hhdt5463

任何人都可以给我一个想法,请。谢谢

万一 NameVer 有两个元素,而字典 Default 只有一个元素,那么当你压缩它们时,输出将只有一个元组:('gadfg5', None, 'gadfg5')

因为 Default 是一个字典,它的键是 Names 的元素,我们不必压缩它们三个,而是尝试:

for dn, dr in zip(Name, Ver):
    if dr is None:
        Path = os.path.join(Folder, dn, Default[dn])
        print("None", Path)
    else:
        Path = os.path.join(Folder, dn, dr)
        print("Not None", Path)

同样的逻辑适用于情况 3

但是这里有一个问题让我用另一个场景来演示,案例4:

输入:

Folder = "D:\Folder"
Name = ['gadfg5', '546sfdgh']
Ver = [None, 'hhdt5463']
Default = {}

这里的字典 Default 是空的,Ver 有一个 None 元素。这将在 Default[dn] 处引发密钥错误。因此,让我们也检查一下,如下所示:

for dn, dr in zip(Name, Ver):
    if dr is None:
        if dn in Default:  # check if Default contains the key dn
            Path = os.path.join(Folder, dn, Default[dn])
            print("None", Path)
        else:
            print('no default path for ', dn)
    else:
        Path = os.path.join(Folder, dn, dr)
        print("Not None", Path)