如何使用 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
任何人都可以给我一个想法,请。谢谢
万一 Name
和 Ver
有两个元素,而字典 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)
我想处理一个数组。这是我之前的问题。
但是我有另外一个案例,我参考了那个答案,但我仍然可以得到我期望的结果。 是这样的
情况1Folder = "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
任何人都可以给我一个想法,请。谢谢
万一 Name
和 Ver
有两个元素,而字典 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)