在python处理这种情况是否可能:
./test.py foo bar foobar foo bar
并获得下一个输出:
foo bar foobar
按顺序显示参数。
答案 0 :(得分:1)
我试过这个,它给出了预期输出,只显示传递给文件的唯一值
#! /usr/bin/python2.7
import sys
loc_args = sys.argv[1:]
if loc_args:
print ' '.join(set(loc_args))
输入:
./test.py foo bar foobar foo bar
输出:
foo bar foobar
编辑:我错过了说我们需要保持秩序的点,所以这是最终的解决方案
#! /usr/bin/python2.7
import sys
from collections import OrderedDict
loc_args = sys.argv[1:]
if loc_args:
print ' '.join(OrderedDict.fromkeys(loc_args).keys())
答案 1 :(得分:0)
以下是基于维护订单的集合的解决方案:
import sys
seen=set()
print ' '.join([x for x in sys.argv[1:] if not (x in seen or seen.add(x))])
或者同样的事情,更详细地说:
import sys
seen=set()
uniqs=[]
for e in sys.argv[1:]:
if e not in seen:
uniqs.append(e)
seen.add(e)
print ' '.join(uniqs)