Ручная работа с Python2.6
Я уверен, что вы или библиотека можете сделать лучше.
inp = '-foo 23 -bar -arch ppc -arch i386 -isysroot / -fno-strict-aliasing -fPIC'.split()
dct = {}
noneSet = set([None])
flagName = None
values = []
for param in inp:
if param.startswith('-'):
flagName = param
if flagName not in dct:
dct[flagName] = set()
dct[flagName].add(None)
continue
# Else found a value
dct[flagName].add(param)
print(dct)
result = sorted(dct['-arch'] - noneSet)
print(result)
>>> ================================ RESTART ================================
>>>
{'-arch': set(['ppc', 'i386', None]), '-isysroot': set([None, '/']), '-fno-strict-aliasing': set([None]), '-fPIC': set([None]), '-foo': set([None, '23']), '-bar': set([None])}
['i386', 'ppc']
>>>