position={'Part1':('A23-1','A24-2','A24-4','A25-1','A27-5'),
'Part2':('A26-7','B50-6','C1-3'),
'Part3':('EM45-4','GU8-9','EM40-3','A15-2')}
所以我有一本字典,显示一个“part”作为键,值是仓库中的位置。现在让我们假设我想找出哪些零件在A25到A27架子上,我遇到了一堵墙。到目前为止,我想到了:
for part, pos in position:
if str.split(pos)=='A25' or 'A26' or 'A27':
print(part,'can be found on shelf A25-A27')
但是,这给了我一个ValueError,我发现它是'因为所有的值都有不同的长度,所以我该怎么做呢?你知道吗
下面是一个有效的单线解决方案:
这就是你想要做的:
但我建议您稍微改变一下数据结构:
现在您可以这样做:
我不确定你认为
str.split(pos)
会做什么,但可能不是你想要的。:)类似地,
if foo == 1 or 2
不检查foo
是否是这些值中的任何一个;它被解析为(foo == 1) or 2
,这始终是真的,因为2
是真值。你想要foo in (1, 2)
。你知道吗您还试图单独在
position
上循环,这只提供了密钥;这可能是您的错误的根源。你知道吗字典中的值本身就是元组,因此需要第二个循环:
您可以使用
any
避免内部循环,如另一个答案中所示,但是对于这样的复杂条件,这很难理解。你知道吗相关问题 更多 >
编程相关推荐