0
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')}

だから私はこの辞書を持っていて、「部品」をキーとして、値は倉庫内の位置を示しています。ここで、棚 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 が発生します。これは、すべての値の長さが異なるためであることがわかりました。

4

3 に答える 3

0

以下は、効率的な 1 行のソリューションです。

>>> 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')}
>>> lst = [k for k,v in position.items() if any(x.split('-')[0] in ('A25', 'A26', 'A27') for x in v)]
>>> lst
['Part2', 'Part1']
>>>
>>> for x in sorted(lst):
...     print(x,'can be found on shelf A25-A27.')
...
Part1 can be found on shelf A25-A27.
Part2 can be found on shelf A25-A27.
>>>
于 2013-11-04T23:48:22.277 に答える