Python过滤器从命令行重复

时间:2015-05-23 18:43:49

标签: python filter duplicates

在python处理这种情况是否可能:

./test.py foo bar foobar foo bar

并获得下一个输出:

foo bar foobar

按顺序显示参数。

2 个答案:

答案 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)